Namensbereiche | Klassen | Makrodefinitionen | Typdefinitionen | Aufzählungen | Aufzählungswerte | Funktionen | Variablen | Freundbeziehungen
Basic event routing functions

This group contains functions and classes that can be used to set up a generic event routing. Mehr ...

Zusammengehörigkeiten von Basic event routing functions:

Namensbereiche

 mutabor
 not for headers
 
 mutaborGUI
 not for headers
 
 mutabor::hidden
 
 compat30
 

Klassen

class  mutabor::BoxClass
 
struct  mutabor::BoxClass::ChangedCallback
 
struct  mutabor::BoxClass::logic_entry
 
struct  mutabor::BoxClass::tone_entry
 
struct  mutabor::BoxClass::tone_system
 
struct  mutabor::BoxClass::current_tone_entry
 
struct  mutabor::BoxClass::CompileCallback
 
struct  mutabor::BoxClass::BoxLock
 
class  mutabor::BoxClass::set_callback
 
class  mutabor::BoxFactory
 
struct  mutabor::BoxFactory::BoxNotCreated
 
struct  mutabor::BoxFactory::FactoryNotFound
 
class  mutabor::ScopedBox
 
class  mutabor::ChannelData
 
class  mutabor::Device
 
class  mutabor::CommonTypedDeviceAPI< T, P, L >
 
class  mutabor::OutputDeviceClass
 
class  mutabor::InputDeviceClass
 
struct  mutabor::InputDeviceClass::current_keys_type
 
struct  mutabor::InputDeviceClass::current_keys_type::entry
 
struct  mutabor::InputDeviceClass::current_keys_type::hash_type
 
class  mutabor::DeviceFactory
 
struct  mutabor::DeviceFactory::DeviceNotCreated
 
class  mutabor::ScopedInputDevice
 
class  mutabor::ScopedOutputDevice
 
class  GisToken
 
class  GisSequenz
 
class  GisSegment
 
class  GisTag
 
class  GisTagBegin
 
class  GisTagEnd
 
class  GisNote
 
class  GisParaInt
 
class  GisParaReal
 
class  GisParaStr
 
class  GisComma
 
class  GisReadHead
 
struct  TagListData
 
class  GisReadArtHead
 
class  GisWriteHead
 
class  ChordNote
 
class  InputMidiFileTest
 not for headers Mehr ...
 
class  OutputMidiFileTest
 
class  midicmnOutputDevice
 not for headers Mehr ...
 
class  CommonMidiOutputTest
 
class  midicmnInputDevice
 
class  CommonMidiInputTest
 
class  mutabor::TRouteClass< I, O, B >
 Class for managing routing. Mehr ...
 
class  mutabor::TRouteClass< I, O, B >::NoOutputDevice
 
class  mutabor::TRouteClass< I, O, B >::NoInputDevice
 
class  mutabor::RouteFactory
 Class for creation of Routes. Mehr ...
 
struct  mutabor::RouteFactory::FactoryAlreadySet
 Douplicate route factory exception. Mehr ...
 
struct  mutabor::RouteFactory::RouteFactoryNotSet
 
class  mutabor::ScopedRoute
 

Makrodefinitionen

#define ROUTING_BOX_INLINES
 
#define ROUTING_BOX_INLINES_PRECOMPILED
 
#define ROUTING_BOX_H
 
#define HIDE_MUTABOR_C_API
 
#define ROUTING_BOX_H_PRECOMPILED
 
#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H
 
#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H_PRECOMPILED
 
#define ROUTING_DEVICE_INLINES
 
#define ROUTING_DEVICE_INLINES_PRECOMPILED
 
#define MU32_ROUTING_DEVICE_H
 
#define MU32_ROUTING_DEVICE_H_PRECOMPILED
 
#define DRUMCHANNEL   9
 
#define DeviceMaxType   DTGis+1
 
#define MMSYSTEM_H
 
#define MU32_ROUTING_GMN_DEVGIS_H
 
#define MU32_ROUTING_GMN_DEVGIS_H_PRECOMPILED
 
#define strdupchr(a)   (a)
 
#define AddStr(s1, s2, s3)   (s1 += s2 + s3)
 
#define MU32_ROUTING_GMN_GIS_H
 
Mehr ...
 
#define MU32_ROUTING_GMN_GIS_H_PRECOMPILED
 
#define FOR_MUTWIN
 
#define CHECKDUP(target, source)   target = source;
 
#define NTAGS   52
 
#define NTAGSHORTS   6
 
#define TTintens   1
 
#define TTslur   2
 
#define TTtempo   12
 
#define TTinstr   19
 
#define TTtie   20
 
#define TTstacc   21
 
#define TTaccent   22
 
#define TTten   23
 
#define TTkey   36
 
#define TToct   37
 
#define TTalter   50
 
#define TTmutabor   51
 
#define GMN_NO_KEY   -32000
 
#define ZIFFER   (mutT('0') <= t[i] && t[i] <= mutT('9'))
 
#define TAG   ((GisTag*)Cursor)
 
#define TAGEND   ((GisTagEnd*)Cursor)
 
#define NOTE1   ((GisNote*)note1)
 
#define NOTE2   ((GisNote*)note2)
 
#define NOTE   ((GisNote*)note)
 
#define WTAG   ((GisTag*)(*Cursor))
 
#define WTAGEND   ((GisTagEnd*)token)
 
#define MU32_ROUTING_GMN_GIS_HEAD_H
 
#define MU32_ROUTING_GMN_GIS_HEAD_H_PRECOMPILED
 
#define CNAlter   1
 
#define CNNoteOn   2
 
#define SepPos   SepPos()
 
#define BracketDeep   (Brackets.Len())
 
#define NEW_LINE   mutT("\n")
 
#define uchar   unsigned char
 
#define CHAR0   CurrentLine[CurrentPos]
 
#define CHAR1   CurrentLine[CurrentPos+1]
 
#define TAKESEP   takesep()
 
#define MU32_ROUTING_GMN_GSP_H
 
#define MU32_ROUTING_GMN_GSP_H_PRECOMPILED
 
#define MU32_ROUTING_GMN_GSP_FILE_H
 
#define MU32_ROUTING_GMN_GSP_FILE_H_PRECOMPILED
 
#define H_MMSYSTEM
 
#define MU32_ROUTING_MIDI_DEVMIDF_H
 
#define MU32_ROUTING_MIDI_DEVMIDF_H_PRECOMPILED
 
#define MU32_ROUTING_MIDI_DEVMIDI_H
 
#define MU32_ROUTING_MIDI_DEVMIDI_H_PRECOMPILED
 
#define H_MMSYSTEM
 
#define ROUTING_MIDICMN_H
 
#define ROUTING_MIDICMN_H_PRECOMPILED
 
#define DEFAULT_BENDING_RANGE   2l
 
#define DEVFMIDFTEST_H
 
#define DEVFMIDFTEST_H_PRECOMPILED
 
#define MIDICMNTEST_H
 
#define MIDICMNTEST_H_PRECOMPILED
 
#define MU32_ROUTING_ROUTE_INLINES_H
 
#define MU32_ROUTING_ROUTE_INLINES_H_PRECOMPILED
 
#define READCONFIGSTR(config, name, variable, defval)
 
#define READCONFIGINT(config, name, variable, defval)
 
#define MU32_ROUTING_ROUTE_H
 
#define MU32_ROUTING_ROUTE_H_PRECOMPILED
 
#define MU32_ROUTING_ROUTECOMPAT_H
 
#define MU32_ROUTING_ROUTECOMPAT_H_PRECOMPILED
 
#define SRC_KERNEL_ROUTING_THREAD_H
 
#define SRC_KERNEL_ROUTING_THREAD_H_PRECOMPILED
 
#define MUTABOR_THREAD_OK   wxMUTEX_NO_ERROR
 
#define ROUTING_TIMINGPARAMS
 
#define ROUTING_TIMINGPARAMS_PRECOMPILED
 
#define MUTABOR_NO_DELTA   (std::numeric_limits<mutint64>::max())
 

Typdefinitionen

typedef struct keyboard_ereignis mutabor::hidden::keyboard_action
 
typedef struct midi_ereignis mutabor::hidden::midi_action
 
typedef struct harmonie_ereignis mutabor::hidden::harmony_action
 
typedef hidden::mutabor_error_type mutabor::error_type
 
typedef boost::intrusive_ptr
< BoxClass > 
mutabor::Box
 
typedef std::vector< Box > mutabor::BoxListType
 
typedef mutabor::hidden::do_aktion mutabor::BoxClass::ChangedCallback::action
 
typedef BoxListType mutabor::BoxClass::listtype
 
typedef std::list< logic_entry > mutabor::BoxClass::logic_list
 
typedef std::vector< tone_entry > mutabor::BoxClass::tone_list
 
typedef std::vector
< current_tone_entry > 
mutabor::BoxClass::current_tone_list
 
typedef std::vector< BoxFactory * > mutabor::BoxFactory::factorylist
 
typedef std::vector< uint8_t > mutabor::midi_string
 
typedef std::vector< int > mutabor::ChannelData::controller_vector
 
typedef T mutabor::CommonTypedDeviceAPI< T, P, L >::thistype
 
typedef P mutabor::CommonTypedDeviceAPI< T, P, L >::DevicePtr
 
typedef L mutabor::CommonTypedDeviceAPI< T, P, L >::listtype
 
typedef CommonTypedDeviceAPI
< OutputDeviceClass >
::DevicePtr 
mutabor::OutputDevice
 
typedef CommonTypedDeviceAPI
< OutputDeviceClass >
::listtype 
mutabor::OutputDeviceList
 
typedef CommonTypedDeviceAPI
< InputDeviceClass >
::DevicePtr 
mutabor::InputDevice
 
typedef CommonTypedDeviceAPI
< InputDeviceClass >::listtype 
mutabor::InputDeviceList
 
typedef
boost::unordered_multiset
< entry, hash_type > 
mutabor::InputDeviceClass::current_keys_type::map_type
 
typedef map_type::iterator mutabor::InputDeviceClass::current_keys_type::iterator
 
typedef map_type::const_iterator mutabor::InputDeviceClass::current_keys_type::const_iterator
 
typedef std::vector
< DeviceFactory * > 
mutabor::DeviceFactory::factorylist
 
typedef void GisReadProceed (GisReadHead *, char)
 
typedef struct TagListData TagList
 
typedef void GisReadArtProceed (GisReadArtHead *token, char turn)
 
typedef TRouteClass mutabor::TRouteClass< I, O, B >::thistype
 
typedef I mutabor::TRouteClass< I, O, B >::InputDevice
 
typedef O mutabor::TRouteClass< I, O, B >::OutputDevice
 
typedef B mutabor::TRouteClass< I, O, B >::Box
 
typedef boost::intrusive_ptr
< TRouteClass > 
mutabor::TRouteClass< I, O, B >::Route
 
typedef std::list< Route > mutabor::TRouteClass< I, O, B >::routeListType
 
typedef std::list< thistype * > mutabor::TRouteClass< I, O, B >::routePtrList
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box >::Route 
mutabor::Route
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box > 
mutabor::RouteClass
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box >::routeListType 
mutabor::routeListType
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box >::routePtrList 
mutabor::routePtrList
 

Aufzählungen

enum  mutabor::BoxType {
  mutabor::MIN_BOX = -3, mutabor::NewBox = -3, mutabor::NoBox, mutabor::GmnBox,
  mutabor::Box0 = 0
}
 
enum  mutabor::BoxClass::boxidtype { mutabor::BoxClass::IDTypeSession, mutabor::BoxClass::IDTypeFile }
 
enum  mutabor::BoxClass::ChangedCallback::ChangedFlags { mutabor::BoxClass::ChangedCallback::BoxChanged = 1, mutabor::BoxClass::ChangedCallback::LogicChanged = 2, mutabor::BoxClass::ChangedCallback::KeysChanged = 4, mutabor::BoxClass::ChangedCallback::ActionChanged = 8 }
 
enum  { mutabor::BoxClass::logic_entry::none, mutabor::BoxClass::logic_entry::Logic, mutabor::BoxClass::logic_entry::CurrentLogic }
 
enum  { mutabor::BoxClass::tone_entry::sounding, mutabor::BoxClass::tone_entry::silent, mutabor::BoxClass::tone_entry::invalid }
 
enum  mutabor::BoxClass::KeyboardFlags { mutabor::BoxClass::KeyboardNoLogic, mutabor::BoxClass::KeyboardLogic, mutabor::BoxClass::KeyboardAny }
 
enum  mutabor::MutaborModeType {
  mutabor::DeviceUnregistered = -1, mutabor::DeviceInitializing, mutabor::DeviceStop, mutabor::DevicePlay,
  mutabor::DevicePause, mutabor::DeviceCompileError, mutabor::DeviceTimingError, mutabor::DeviceKilled
}
 
enum  mutabor::DevType {
  mutabor::DTNotSet = -1, mutabor::DTUnknown, mutabor::DTMidiPort, mutabor::DTMidiFile,
  mutabor::DTGis
}
 
enum  mutabor::Device::devidtype { mutabor::Device::IDTypeSession, mutabor::Device::IDTypeFile, mutabor::Device::IDTypeHardware }
 
enum  mutabor::InputDeviceClass::wxThreadWait { mutabor::InputDeviceClass::wxTHREAD_WAIT_BLOCK, mutabor::InputDeviceClass::wxTHREAD_WAIT_YIELD, mutabor::InputDeviceClass::wxTHREAD_WAIT_DEFAULT }
 
enum  GisType {
  GTNull, GTUnknown, GTSequenz, GTSegment,
  GTTag, GTTagBegin, GTTagEnd, GTNote,
  GTParaInt, GTParaReal, GTParaStr, GTComma
}
 
enum  ARType {
  ARNormal, ARSlur, ARTenuto, ARPortato,
  ARStaccatto
}
 
enum  mutabor::RouteType { mutabor::RTall, mutabor::RTelse, mutabor::RTchannel, mutabor::RTstaff }
 Type of route input filter. Mehr ...
 

Funktionen

const char * mutabor::to_string (error_type type)
 
 mutabor::BoxClass::ChangedCallback::ChangedCallback (Box &b)
 
 mutabor::BoxClass::ChangedCallback::~ChangedCallback ()
 
virtual void mutabor::BoxClass::ChangedCallback::SetBox (Box &b)
 
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction (int flags)=0
 
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction (const char *action)
 
virtual mutabor::BoxClass::~BoxClass ()
 
size_t mutabor::BoxClass::get_session_id () const
 
virtual BoxType mutabor::BoxClass::GetType ()
 
virtual mutString mutabor::BoxClass::GetTypeName ()
 
virtual mutString mutabor::BoxClass::GetLabel ()
 
bool mutabor::BoxClass::IsNormal ()
 
int mutabor::BoxClass::get_routefile_id () const
 
virtual void mutabor::BoxClass::set_routefile_id (int id)
 
static int mutabor::BoxClass::GetNextFreeBox ()
 
virtual void mutabor::BoxClass::Save (tree_storage &config)
 Save current device settings in a tree storage. Mehr ...
 
virtual void mutabor::BoxClass::Save (tree_storage &config, const RouteClass *route)
 Save route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::BoxClass::Load (tree_storage &config)
 Load current device settings from a tree storage. Mehr ...
 
virtual void mutabor::BoxClass::Load (tree_storage &config, RouteClass *route)
 Load route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::BoxClass::Add (Route &route)
 add a route Mehr ...
 
virtual bool mutabor::BoxClass::Replace (Route &oldRoute, Route &newRoute)
 replace a route Mehr ...
 
virtual bool mutabor::BoxClass::Remove (Route &route)
 remove a route Mehr ...
 
virtual bool mutabor::BoxClass::MoveRoutes (Box &newclass)
 Move routes to another device. Mehr ...
 
const routeListType & mutabor::BoxClass::GetRoutes () const
 
routeListType & mutabor::BoxClass::GetRoutes ()
 
static const listtype & mutabor::BoxClass::GetBoxList ()
 
static Box mutabor::BoxClass::GetBox (int id, boxidtype kind)
 Scan the list of Boxes for a given id. Mehr ...
 
static Box mutabor::BoxClass::GetOrCreateBox (int id)
 Return the box that is associated with the corrent id. Mehr ...
 
virtual int mutabor::BoxClass::MoveInList (int count)
 Move the box in the box list. Mehr ...
 
static void mutabor::BoxClass::ClearBoxList ()
 
virtual void mutabor::BoxClass::DisconnectFromAll ()
 Disconnect the device from all pairings with routes GUI data or something else. Mehr ...
 
virtual void mutabor::BoxClass::Panic (int type)
 reset the device if requested Mehr ...
 
virtual void mutabor::BoxClass::Panic (Route r, int type)
 
virtual void mutabor::BoxClass::Panic (Route r, int type, size_t unique_id)
 
virtual void mutabor::BoxClass::Reset ()
 
virtual void mutabor::BoxClass::ReadData (wxConfigBase *config)
 
virtual void mutabor::BoxClass::WriteData (wxConfigBase *config)
 
bool mutabor::BoxClass::Open ()
 
void mutabor::BoxClass::Close ()
 
virtual bool mutabor::BoxClass::DoOpen ()
 
virtual void mutabor::BoxClass::DoClose ()
 
bool mutabor::BoxClass::IsOpen ()
 
static void mutabor::BoxClass::CloseAll ()
 Close all boxes. Mehr ...
 
static bool mutabor::BoxClass::ActivateAll (bool isRealtime)
 Activate all boxes. Mehr ...
 
static void mutabor::BoxClass::StopAll ()
 Stop all boxes. Mehr ...
 
logic_list mutabor::BoxClass::GetLogics ()
 Get a list of currently defined logics. Mehr ...
 
 mutabor::BoxClass::tone_entry::tone_entry (double p)
 
 mutabor::BoxClass::tone_entry::tone_entry ()
 
tone_system mutabor::BoxClass::GetToneSystem ()
 
 mutabor::BoxClass::current_tone_entry::current_tone_entry ()
 
 mutabor::BoxClass::current_tone_entry::current_tone_entry (int ind, double p, size_t i, int c)
 
current_tone_list mutabor::BoxClass::GetCurrentTones ()
 
virtual void mutabor::BoxClass::CompileCallback::Refresh ()=0
 
virtual void mutabor::BoxClass::CompileCallback::SetStatus (mutString status)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetMessage (mutString message)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetStatus (int logics, int tones, int tunings, int tone_systems, int intervals, int characters)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetLine (int number)=0
 
bool mutabor::BoxClass::Compile (CompileCallback *callback, const char *logic)
 
static void mutabor::BoxClass::compile_callback (struct mutabor_box_type *b, int line_number)
 
void mutabor::BoxClass::MidiAnalysis (const std::vector< unsigned char > *midiCode)
 
void mutabor::BoxClass::MidiOut (struct midiliste *outliste)
 
static void mutabor::BoxClass::MidiOutCallback (struct mutabor::hidden::mutabor_box_type *b, struct mutabor::hidden::midiliste *outliste)
 
void mutabor::BoxClass::UpdateTones ()
 Update the currently playing tones to the current tone system. Mehr ...
 
int mutabor::BoxClass::GetChannel (int key, size_t channel, size_t id)
 Get the MIDI channel of a given tone. Mehr ...
 
void mutabor::BoxClass::AddNote (int note, size_t id, size_t channel, void *userdata)
 
void mutabor::BoxClass::DeleteNote (int note, size_t id, int channel)
 
bool mutabor::BoxClass::IsLogicKey (int key)
 
void mutabor::BoxClass::KeyboardAnalysis (int key, KeyboardFlags flags)
 Execute the action associated with a key that is pressed on the computer keyboard. Mehr ...
 
void mutabor::BoxClass::KeyboardAnalysis (const mutStringRef keys)
 Execute the actions that are associated with the characters of a string. Mehr ...
 
long mutabor::BoxClass::get_frequency (int note)
 
int mutabor::BoxClass::get_index (int note)
 
int mutabor::BoxClass::get_distance (int note)
 
void mutabor::BoxClass::SetLogic (Box b)
 
virtual void mutabor::BoxClass::Activate ()
 Activate the current box. Mehr ...
 
virtual void mutabor::BoxClass::Destroy ()
 Destroy the current object. Mehr ...
 
static void mutabor::BoxClass::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
wxString mutabor::BoxClass::TowxString () const
 
virtual void mutabor::BoxClass::runtime_error (error_type type, const char *message)
 Process an error message (doing the real work) Mehr ...
 
virtual const mutStringRef mutabor::BoxClass::get_errors ()
 Return the collected errors and warnings. Mehr ...
 
std::string mutabor::BoxClass::ActionToString (ChangedCallback::action *action)
 
static void mutabor::BoxClass::log_action (mutabor_box_type *box, const char *action)
 
static void mutabor::BoxClass::UpdateCallback (struct mutabor_box_type *b, unsigned int flags)
 
 mutabor::BoxClass::BoxLock::BoxLock (BoxClass *b)
 
 mutabor::BoxClass::BoxLock::~BoxLock ()
 
 mutabor::BoxClass::set_callback::set_callback (BoxClass *b, CompileCallback *callback)
 
 mutabor::BoxClass::set_callback::~set_callback ()
 
 mutabor::BoxClass::BoxClass (int id=-1)
 
void mutabor::BoxClass::Register (ChangedCallback *callback)
 
void mutabor::BoxClass::Unregister (ChangedCallback *callback)
 
void mutabor::BoxClass::ExecuteCallbacks (unsigned int flags)
 
void mutabor::BoxClass::ExecuteCallbacks (const char *action)
 
static void mutabor::BoxClass::AppendToBoxList (Box dev)
 
static void mutabor::BoxClass::RemoveFromBoxList (Box dev)
 
static listtype::iterator mutabor::BoxClass::FindInBoxList (Box b)
 
static bool mutabor::BoxClass::IsInBoxList (const Box b)
 
static void mutabor::BoxClass::TruncateBoxList (Box dev)
 
 mutabor::BoxFactory::FactoryNotFound::FactoryNotFound (int i)
 
virtual mutabor::BoxFactory::FactoryNotFound::~FactoryNotFound () throw ()
 
virtual const char * mutabor::BoxFactory::FactoryNotFound::what (void) const throw ()
 Returns the thrown error message as a c-style string. Mehr ...
 
 mutabor::BoxFactory::BoxFactory (size_t id=0)
 
virtual mutabor::BoxFactory::~BoxFactory ()
 
static Box mutabor::BoxFactory::Create (int type, int id=NewBox)
 
static void mutabor::BoxFactory::Destroy ()
 
static void mutabor::BoxFactory::LoadBoxes (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::BoxFactory::SaveBoxes (tree_storage &config)
 write the routes to the configuration Mehr ...
 
virtual size_t mutabor::BoxFactory::GetType ()
 
virtual BoxClass * mutabor::BoxFactory::DoCreateBox (int id=-1) const
 
virtual void mutabor::BoxFactory::DoLoadBoxes (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::BoxFactory::DoSaveBoxes (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
 mutabor::ScopedBox::~ScopedBox ()
 
 mutabor::ScopedBox::ScopedBox (BoxClass *rhs)
 
 mutabor::ScopedBox::ScopedBox (const Box &rhs)
 
ScopedBox & mutabor::ScopedBox::operator= (BoxClass *rhs)
 
ScopedBox & mutabor::ScopedBox::operator= (const Box &rhs)
 
void mutabor::Panic (int type)
 
void mutabor::BoxClose ()
 
bool mutabor::OpenAll ()
 
void mutabor::initialize_box_data ()
 
 mutabor::ChannelData::ChannelData (int sound=-1)
 
void mutabor::ChannelData::Reset ()
 
void mutabor::ChannelData::MidiReset ()
 Reset the controllers according to the MIDI standard. Mehr ...
 
int mutabor::ChannelData::set_controller (size_t number, int8_t data)
 
int mutabor::ChannelData::get_index (int message)
 
int mutabor::ChannelData::get_controller (size_t number) const
 
bool mutabor::ChannelData::get_hold () const
 Check whether one of the hold switches is active. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller () const
 Get the first changed controller. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller (const ChannelData &other) const
 Get the first changed controller that differs from the corresponding controller in another channel. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller (controller_vector::const_iterator last) const
 Get the first changed controller. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller (const ChannelData &other, controller_vector::const_iterator last) const
 Get the first changed controller that differs from the corresponding controller in another channel. Mehr ...
 
bool mutabor::ChannelData::is_changed_controller (controller_vector::const_iterator actual) const
 
void mutabor::ChannelData::program_change (int program)
 
void mutabor::ChannelData::program_change (const ChannelData &o)
 
bool mutabor::ChannelData::is_compatible (const ChannelData &cd) const
 
int mutabor::ChannelData::get_bend ()
 
void mutabor::ChannelData::set_bend (int b)
 
int mutabor::ChannelData::get_program () const
 
int mutabor::ChannelData::get_bank_coarse () const
 
int mutabor::ChannelData::get_bank_fine () const
 
virtual mutabor::Device::~Device ()
 
virtual void mutabor::Device::Save (tree_storage &config)=0
 Save current device settings in a tree storage. Mehr ...
 
virtual void mutabor::Device::Save (tree_storage &config, const RouteClass *route)=0
 Save route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::Device::Load (tree_storage &config)=0
 Load current device settings from a tree storage. Mehr ...
 
virtual void mutabor::Device::Load (tree_storage &config, RouteClass *route)=0
 Load route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::Device::Add (Route &route)=0
 add a route Mehr ...
 
virtual bool mutabor::Device::Replace (Route &oldRoute, Route &newRoute)=0
 replace a route Mehr ...
 
virtual bool mutabor::Device::Remove (Route &route)=0
 remove a route Mehr ...
 
virtual void mutabor::Device::Panic (int type)=0
 reset the device if requested Mehr ...
 
virtual void mutabor::Device::Play ()
 Start playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::Pause ()
 Pause playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::Stop ()
 Stop playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::SetMode (MutaborModeType m)
 
MutaborModeType mutabor::Device::GetMode ()
 
void mutabor::Device::runtime_error (int type, mutString message,...)
 Process an error message. Mehr ...
 
virtual void mutabor::Device::runtime_error (int type, const mutStringRef message, va_list &args)
 Process an error message (doing the real work) Mehr ...
 
const wxString & mutabor::Device::GetName () const
 
virtual void mutabor::Device::SetName (const wxString &s)
 
size_t mutabor::Device::get_session_id () const
 
int mutabor::Device::get_routefile_id () const
 
virtual void mutabor::Device::ReadData (wxConfigBase *config)
 
virtual void mutabor::Device::WriteData (wxConfigBase *config)
 
virtual mutString mutabor::Device::GetTypeName () const
 
virtual bool mutabor::Device::Open ()=0
 
virtual void mutabor::Device::Close ()=0
 
bool mutabor::Device::IsDirty () const
 
void mutabor::Device::Dirty (bool d=true)
 
bool mutabor::Device::IsOpen () const
 
virtual wxString mutabor::Device::TowxString () const
 
 mutabor::Device::Device (const mutStringRef name=mutEmptyString, int id=-1)
 
virtual void mutabor::Device::setUserData (void *data)
 
virtual void * mutabor::Device::getUserData () const
 
void mutabor::Device::set_routefile_id (int id)
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ()
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI (const mutStringRef name, int id=-1)
 
virtual mutabor::CommonTypedDeviceAPI< T, P, L >::~CommonTypedDeviceAPI ()
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy ()
 Destroy the current object. Mehr ...
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::DisconnectFromAll ()
 Disconnect the device from all pairings with routes GUI data or something else. Mehr ...
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::Add (Route &route)
 add a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::Replace (Route &oldroute, Route &newroute)
 replace a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::Remove (Route &route)
 remove a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::MoveRoutes (DevicePtr &newclass)
 Move routes to another device. Mehr ...
 
size_t mutabor::CommonTypedDeviceAPI< T, P, L >::nRoutes ()
 
const routeListType & mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes () const
 
routeListType & mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ()
 
static const listtype & mutabor::CommonTypedDeviceAPI< T, P, L >::GetDeviceList ()
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
static DevicePtr mutabor::CommonTypedDeviceAPI< T, P, L >::GetDevice (int id, devidtype kind)
 Scan the list of input devices for a given id. Mehr ...
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::operator const thistype & () const
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::operator thistype & ()
 
thistype * mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ()
 
const thistype * mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr () const
 
virtual int mutabor::CommonTypedDeviceAPI< T, P, L >::MoveInList (int count)
 Move the device in the device list. Mehr ...
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::ClearDeviceList ()
 
virtual wxString mutabor::CommonTypedDeviceAPI< T, P, L >::TowxString () const
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::AppendToDeviceList (DevicePtr dev)
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::RemoveFromDeviceList (DevicePtr dev)
 
static listtype::iterator mutabor::CommonTypedDeviceAPI< T, P, L >::FindInDeviceList (DevicePtr dev)
 
static bool mutabor::CommonTypedDeviceAPI< T, P, L >::IsInDeviceList (const DevicePtr dev)
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::TruncateDeviceList (DevicePtr dev)
 
virtual mutabor::OutputDeviceClass::~OutputDeviceClass ()
 
void mutabor::OutputDeviceClass::NoteOn (Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
 
void mutabor::OutputDeviceClass::NoteOff (Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
 
void mutabor::OutputDeviceClass::UpdateTones (RouteClass *route)
 
void mutabor::OutputDeviceClass::Controller (int mutabor_channel, int controller, int value, size_t id)
 
int mutabor::OutputDeviceClass::GetChannel (int inkey, size_t channel, size_t id)
 
void mutabor::OutputDeviceClass::Gis (GisToken *token, char turn)
 
void mutabor::OutputDeviceClass::AddTime (frac time)
 
void mutabor::OutputDeviceClass::MidiOut (mutabor::Box box, midi_string data)
 
void mutabor::OutputDeviceClass::MidiOut (BYTE *p, size_t n)
 
void mutabor::OutputDeviceClass::Quiet (Route r, int type)
 
void mutabor::OutputDeviceClass::Quiet (Route r, int type, size_t id)
 
void mutabor::OutputDeviceClass::Panic (int type)
 reset the device if requested Mehr ...
 
bool mutabor::OutputDeviceClass::Open ()
 
virtual bool mutabor::OutputDeviceClass::NeedsRealTime ()
 
virtual DevType mutabor::OutputDeviceClass::GetType () const
 
virtual mutString mutabor::OutputDeviceClass::GetTypeName () const
 
virtual wxString mutabor::OutputDeviceClass::TowxString () const
 
 mutabor::OutputDeviceClass::OutputDeviceClass ()
 
 mutabor::OutputDeviceClass::OutputDeviceClass (const mutStringRef name, int id=-1)
 
virtual void mutabor::OutputDeviceClass::do_NoteOn (Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)=0
 Really Send the beginning of a sounding note. Mehr ...
 
virtual void mutabor::OutputDeviceClass::do_NoteOff (Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)=0
 
virtual void mutabor::OutputDeviceClass::do_UpdateTones (RouteClass *route)=0
 
virtual void mutabor::OutputDeviceClass::do_Controller (int mutabor_channel, int controller, int value, size_t id)=0
 
virtual int mutabor::OutputDeviceClass::do_GetChannel (int inkey, size_t channel, size_t id)=0
 
virtual void mutabor::OutputDeviceClass::do_Gis (GisToken *token, char turn)=0
 
virtual void mutabor::OutputDeviceClass::do_AddTime (frac time)=0
 
virtual void mutabor::OutputDeviceClass::do_MidiOut (mutabor::Box box, midi_string data)=0
 
virtual void mutabor::OutputDeviceClass::do_MidiOut (BYTE *p, size_t n)=0
 
virtual void mutabor::OutputDeviceClass::do_Quiet (Route r, int type)=0
 
virtual void mutabor::OutputDeviceClass::do_Quiet (Route r, int type, size_t id)=0
 
virtual void mutabor::OutputDeviceClass::do_Panic (int type)
 
virtual bool mutabor::OutputDeviceClass::do_Open ()
 
 mutabor::InputDeviceClass::current_keys_type::entry::entry (int k, int u, int v, Route &R, InputDevice i, const ChannelData *c, void *d)
 
bool mutabor::InputDeviceClass::current_keys_type::entry::operator== (const entry &e) const
 
uint8_t mutabor::InputDeviceClass::current_keys_type::hash_type::operator() (const entry &val) const
 
void mutabor::InputDeviceClass::current_keys_type::add (int key, int velocity, int unique_id, Route &R, InputDevice i, const ChannelData &c, void *userdata)
 
void mutabor::InputDeviceClass::current_keys_type::add (entry e)
 
void mutabor::InputDeviceClass::current_keys_type::remove (int key, int velocity, int unique_id, Route &R)
 
void mutabor::InputDeviceClass::current_keys_type::remove (iterator i)
 
void mutabor::InputDeviceClass::current_keys_type::clear ()
 
void mutabor::InputDeviceClass::current_keys_type::rehash (size_t n)
 
iterator mutabor::InputDeviceClass::current_keys_type::begin ()
 
const_iterator mutabor::InputDeviceClass::current_keys_type::begin () const
 
iterator mutabor::InputDeviceClass::current_keys_type::end ()
 
const_iterator mutabor::InputDeviceClass::current_keys_type::end () const
 
virtual mutabor::InputDeviceClass::~InputDeviceClass ()
 
virtual void mutabor::InputDeviceClass::Close ()
 
virtual void mutabor::InputDeviceClass::Stop ()
 Stop playback or recording of the device. Mehr ...
 
virtual void mutabor::InputDeviceClass::Play ()
 Command the device to play music. Mehr ...
 
static bool mutabor::InputDeviceClass::BatchPlay ()
 Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex route environment. Mehr ...
 
static void mutabor::InputDeviceClass::RealtimePlay ()
 Play all input devices in realtime mode The the realtime mode allows interactive playing together with the integrated sequencer. Mehr ...
 
virtual wxThread::ExitCode mutabor::InputDeviceClass::WaitForDeviceFinish (wxThreadWait flags=wxTHREAD_WAIT_BLOCK)
 Wait for the thread started with Play(). Mehr ...
 
virtual void mutabor::InputDeviceClass::Pause ()
 Pause playback or recording of the device. Mehr ...
 
virtual bool mutabor::InputDeviceClass::NeedsRealTime ()
 
virtual mutint64 mutabor::InputDeviceClass::PrepareNextEvent ()
 Go on to the next event. Mehr ...
 
virtual DevType mutabor::InputDeviceClass::GetType () const
 
virtual mutString mutabor::InputDeviceClass::GetTypeName () const
 
static mutint64 mutabor::InputDeviceClass::GetNO_DELTA ()
 
bool mutabor::InputDeviceClass::IsDelta (mutint64 d)
 
virtual wxString mutabor::InputDeviceClass::TowxString () const
 
void mutabor::InputDeviceClass::NoteOn (Route &R, int key, int velocity, size_t make_unique, const ChannelData &input_channel_data, void *userdata)
 
void mutabor::InputDeviceClass::NoteOff (Route &R, int key, int velocity, size_t make_unique)
 
void mutabor::InputDeviceClass::DoNoteOff (Route &R, int key, int velocity, size_t make_unique)
 
void mutabor::InputDeviceClass::SilenceKeys (bool remove)
 
void mutabor::InputDeviceClass::DoSilenceKeys (bool remove)
 
void mutabor::InputDeviceClass::ResumeKeys ()
 
void mutabor::InputDeviceClass::Panic (int type)
 reset the device if requested Mehr ...
 
void mutabor::InputDeviceClass::Panic (int type, size_t unique_id)
 
virtual ChannelData & mutabor::InputDeviceClass::GetChannelData (const current_keys_type::entry &key) const =0
 
 mutabor::InputDeviceClass::InputDeviceClass (const mutStringRef name=mutEmptyString, mutabor::MutaborModeType m=DeviceStop, int id=-1)
 
 mutabor::DeviceFactory::FactoryNotFound::FactoryNotFound (int i)
 
virtual mutabor::DeviceFactory::FactoryNotFound::~FactoryNotFound () throw ()
 
virtual const char * mutabor::DeviceFactory::FactoryNotFound::what (void) const throw ()
 Returns the thrown error message as a c-style string. Mehr ...
 
 mutabor::DeviceFactory::DeviceFactory (size_t id=0)
 
virtual mutabor::DeviceFactory::~DeviceFactory ()
 
static OutputDevice mutabor::DeviceFactory::CreateOutput (int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
 
static InputDevice mutabor::DeviceFactory::CreateInput (int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
 
template<class T >
static T mutabor::DeviceFactory::Create (int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
 
static void mutabor::DeviceFactory::Destroy ()
 
static void mutabor::DeviceFactory::LoadOutputDevices (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::DeviceFactory::SaveOutputDevices (tree_storage &config)
 write the routes to the configuration Mehr ...
 
static void mutabor::DeviceFactory::LoadInputDevices (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::DeviceFactory::SaveInputDevices (tree_storage &config)
 write the routes to the configuration Mehr ...
 
virtual size_t mutabor::DeviceFactory::GetType () const =0
 
virtual OutputDeviceClass * mutabor::DeviceFactory::DoCreateOutput (const mutStringRef name, int id=-1) const =0
 
virtual InputDeviceClass * mutabor::DeviceFactory::DoCreateInput (const mutStringRef name, MutaborModeType mode, int id=-1) const =0
 
virtual void mutabor::DeviceFactory::DoLoadOutputDevices (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoSaveOutputDevices (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoLoadInputDevices (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoSaveInputDevices (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
void mutabor::InitDeviceFactories ()
 
 mutabor::ScopedInputDevice::~ScopedInputDevice ()
 
ScopedInputDevice & mutabor::ScopedInputDevice::operator= (InputDeviceClass *rhs)
 
ScopedInputDevice & mutabor::ScopedInputDevice::operator= (const InputDevice &rhs)
 
 mutabor::ScopedOutputDevice::~ScopedOutputDevice ()
 
ScopedOutputDevice & mutabor::ScopedOutputDevice::operator= (OutputDeviceClass *rhs)
 
ScopedOutputDevice & mutabor::ScopedOutputDevice::operator= (const OutputDevice &rhs)
 
bool mutabor::OutOpen ()
 
void mutabor::OutClose ()
 
void mutabor::OutAddTime (frac time)
 
bool mutabor::InOpen ()
 
void mutabor::InClose ()
 
bool mutabor::NeedsRealTime ()
 
int Name2Key (const mutString name)
 
int Acc2Int (const mutString acc)
 
void Clear (mutString *s)
 
int BuildTag ()
 
int StartSep ()
 
int BeginSegment ()
 
int EndSegment ()
 
int BeginSequenz ()
 
int EndSequenz ()
 
int BeginParameter ()
 
int EndParameter ()
 
int BeginRange ()
 
int EndRange ()
 
int NextSequenz ()
 
int Note (const mutString name, const mutString accedentials, int octave, frac duration)
 
int Tag (const mutString tagName)
 
int TagParaInt (long i)
 
int TagParaReal (double x)
 
int TagParaStr (mutString s)
 
int Comma ()
 
void UnRavel ()
 
GisType GetGisType (GisToken *token)
 
int GetTagId (const mutString &name, mutString &registered)
 
GisTokenCopyPara (GisToken *para)
 
GisTokenGisParse (const mutString FileName)
 
wxString GISPrettyPrint (wxString s)
 
double GetReal (GisToken *token)
 
char GetMidiInstrument (GisToken *token)
 
mutint64 GetTheSpeedFactor (GisToken *token)
 This function returns the speed factor that must be multiplied to the duration value in order to get a delta timestamp in μs. Mehr ...
 
frac GisReadHeadOn (GisReadHead **Head, frac dTime, GisReadProceed *proceed)
 
TagListCopy (TagList *list)
 
void Erase (TagList *list)
 
TagListRemoveTag (TagList **list)
 
TagListAddTag (TagList **list, GisTag *tag)
 
TagListEndTag (TagList **list, GisTagEnd *tagEnd)
 
void GisReadArtDummy (GisReadArtHead *, char)
 
frac GisReadArtHeadOn (GisReadArtHead **Head, frac dTime, GisReadArtProceed *proceed)
 
int StrCmp (const mutString &s1, const mutString &s2)
 
int CmpNote (GisToken *note1, GisToken *note2)
 
GisWriteHeadGetMatchingHeader (GisWriteHead **head, const mutString id)
 
int GisWriteHeadGis (GisWriteHead **head, mutString id, GisToken *token, char turn)
 
void CloseAllSubs (GisWriteHead *head)
 
size_t SepPos ()
 
void AddStr (mutString &Target, int Pos, const mutString &Source)
 
int CharIn (mutChar c, const mutChar *s)
 
int IsLetter (mutChar c)
 
int DoError (int nr, int pos=-1)
 
int CheckError (int nr)
 
void SavePos ()
 
wxString & takesep ()
 
int GetSep ()
 
long ReadLong (int SignAllowed)
 
int ReadParaNumber ()
 
int ReadParaStr ()
 
int ReadTag ()
 
int ReadNote ()
 
int DoParse ()
 
int GspParse (const mutString &FileName)
 
int OpenFile (const mutString &Name)
 
int CloseFile ()
 
int ReadNewLine ()
 
 mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice (const thistype *r)
 
virtual mutabor::TRouteClass< I, O, B >::NoOutputDevice::~NoOutputDevice () throw ()
 
 mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice (const thistype *r)
 
virtual mutabor::TRouteClass< I, O, B >::~TRouteClass ()
 
virtual void mutabor::TRouteClass< I, O, B >::Save (tree_storage &config)
 Write the route settings into a tree based configuration. Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Load (tree_storage &config)
 Read the route into from a tree based configuration. Mehr ...
 
char mutabor::TRouteClass< I, O, B >::Check (int i)
 
const OutputDevice & mutabor::TRouteClass< I, O, B >::GetOutputDevice () const
 
const InputDevice & mutabor::TRouteClass< I, O, B >::GetInputDevice () const
 
void mutabor::TRouteClass< I, O, B >::NoteOn (int key, int velocity, size_t make_unique, const ChannelData &input_channel_data, void *userdata)
 
void mutabor::TRouteClass< I, O, B >::NoteOff (int key, int velocity, size_t make_unique)
 
void mutabor::TRouteClass< I, O, B >::MidiAnalysis (const std::vector< unsigned char > *midiCode)
 
void mutabor::TRouteClass< I, O, B >::MidiOut (midi_string &data)
 
void mutabor::TRouteClass< I, O, B >::UpdateTones ()
 
int mutabor::TRouteClass< I, O, B >::GetChannel (int key, size_t channel, size_t id)
 
void mutabor::TRouteClass< I, O, B >::Panic (int type)
 
void mutabor::TRouteClass< I, O, B >::Panic (int type, size_t unique_id)
 
void mutabor::TRouteClass< I, O, B >::Controller (int controller, int value, size_t make_unique)
 
virtual void mutabor::TRouteClass< I, O, B >::Add (OutputDevice &out)
 add a new output device Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Add (InputDevice &in)
 add a new input device Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Add (Box &b)
 add a new box Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (OutputDevice &olddev, OutputDevice &newdev)
 replace an existing output device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (InputDevice &olddev, InputDevice &newdev)
 replace an existing input device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (Box &oldbox, Box &newbox)
 replace an existing box Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (OutputDevice &out)
 remove an existing output device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (InputDevice &in)
 remove an existing input device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (Box &b)
 remov an existing box Mehr ...
 
void mutabor::TRouteClass< I, O, B >::SetDeviceId (int Id, I)
 
void mutabor::TRouteClass< I, O, B >::SetDeviceId (int Id, O)
 
void mutabor::TRouteClass< I, O, B >::SetBoxId (int Id)
 
int mutabor::TRouteClass< I, O, B >::GetDeviceId (I)
 
int mutabor::TRouteClass< I, O, B >::GetDeviceId (O)
 
int mutabor::TRouteClass< I, O, B >::GetBoxId ()
 
bool mutabor::TRouteClass< I, O, B >::GetActive () const
 
void mutabor::TRouteClass< I, O, B >::SetActive (bool active)
 
Box mutabor::TRouteClass< I, O, B >::GetBox () const
 
virtual void mutabor::TRouteClass< I, O, B >::SetBox (Box b)
 
RouteType mutabor::TRouteClass< I, O, B >::GetType () const
 
void mutabor::TRouteClass< I, O, B >::SetType (RouteType type)
 
const mutStringmutabor::TRouteClass< I, O, B >::GetTypeName ()
 
int mutabor::TRouteClass< I, O, B >::GetInputFrom () const
 
void mutabor::TRouteClass< I, O, B >::SetInputFrom (int i)
 
int mutabor::TRouteClass< I, O, B >::GetOutputFrom () const
 
void mutabor::TRouteClass< I, O, B >::SetOutputFrom (int o)
 
int mutabor::TRouteClass< I, O, B >::GetInputTo () const
 
void mutabor::TRouteClass< I, O, B >::SetInputTo (int i)
 
int mutabor::TRouteClass< I, O, B >::GetOutputTo () const
 
void mutabor::TRouteClass< I, O, B >::SetOutputTo (int o)
 
bool mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel () const
 
void mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel (bool avoid)
 
int mutabor::TRouteClass< I, O, B >::get_routefile_id () const
 
size_t mutabor::TRouteClass< I, O, B >::get_session_id () const
 
static const routeListType & mutabor::TRouteClass< I, O, B >::GetRouteList ()
 
virtual void mutabor::TRouteClass< I, O, B >::Destroy ()
 Remove from Route list to be deleted, when it becomes free. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::SaveRoutes (tree_storage &config)
 Save the current routes in a tree storage. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::LoadRoutes (tree_storage &config)
 Load the current routes from a tree storage. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::ClearRouteList ()
 
virtual wxString mutabor::TRouteClass< I, O, B >::TowxString () const
 
 mutabor::TRouteClass< I, O, B >::WATCHEDPTR (void, routing, TRouteClass) userdata
 
 mutabor::TRouteClass< I, O, B >::TRouteClass ()
 
 mutabor::TRouteClass< I, O, B >::TRouteClass (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box &box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 
void mutabor::TRouteClass< I, O, B >::Create (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 
virtual void mutabor::TRouteClass< I, O, B >::setUserData (void *data)
 
virtual void * mutabor::TRouteClass< I, O, B >::getUserData () const
 
static void mutabor::TRouteClass< I, O, B >::AppendToRouteList (Route route)
 
static void mutabor::TRouteClass< I, O, B >::RemoveFromRouteList (Route route)
 
Route mutabor::FindRoute (size_t id)
 
 mutabor::RouteFactory::FactoryAlreadySet::FactoryAlreadySet (RouteFactory *o, RouteFactory *n)
 
 mutabor::RouteFactory::RouteFactoryNotSet::RouteFactoryNotSet ()
 
 mutabor::RouteFactory::RouteFactory ()
 Creates a route Factory. Mehr ...
 
static Route mutabor::RouteFactory::Create ()
 Creates a generic route. Mehr ...
 
static Route mutabor::RouteFactory::Create (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 Creates a preconfigured route according to the given type. Mehr ...
 
static void mutabor::RouteFactory::Destroy ()
 Destroy the route factory. Mehr ...
 
static void mutabor::RouteFactory::LoadRoutes (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::RouteFactory::SaveRoutes (tree_storage &config)
 write the routes to the configuration Mehr ...
 
virtual mutabor::RouteFactory::~RouteFactory ()
 Destructor. Mehr ...
 
virtual RouteClass * mutabor::RouteFactory::DoCreate () const __attribute__((malloc))
 Creates a generic route. Mehr ...
 
virtual RouteClass * mutabor::RouteFactory::DoCreate (InputDevice &in, OutputDevice &out, RouteType type, int iFrom, int iTo, Box box, bool active, int oFrom, int oTo, bool oNoDrum) const __attribute__((malloc))
 Creates a preconfigured route. Mehr ...
 
virtual void mutabor::RouteFactory::DoLoadRoutes (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::RouteFactory::DoSaveRoutes (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
 mutabor::ScopedRoute::~ScopedRoute ()
 
ScopedRoute & mutabor::ScopedRoute::operator= (element_type *rhs)
 
ScopedRoute & mutabor::ScopedRoute::operator= (const Route &rhs)
 
void compat30::LoadRoutes (const mutStringRef)
 load the routes from a text string Mehr ...
 
void compat30::SaveRoutes (mutStringRef)
 write the routes to the given string Mehr ...
 
template<>
InputDevice mutabor::DeviceFactory::Create (int type, const mutStringRef name, MutaborModeType mode, int id)
 
GisType GisTag::GetParaType (int nr)
 
GisTokenGisTag::GetPara (int nr)
 
 GisNote::GisNote (int key, int octave, int acc, const mutString sep=mutEmptyString, GisToken *next=0)
 
int GisNote::GetKey ()
 
GisReadHeadGisReadHead::InsertInfrontOf (GisReadHead *position)
 
GisReadHeadGisReadHead::CutOut ()
 
void GisReadHead::CreateSegmentSubs ()
 
void GisReadHead::CreateSequenzSubs ()
 
void GisReadHead::Read ()
 
virtual wxString GisReadHead::ToString ()
 
void GisReadArtHead::Read ()
 
virtual wxString GisReadArtHead::ToString ()
 
 ChordNote::ChordNote (ChordNote *first)
 
void ChordNote::CountOnTime (frac dTime)
 
void ChordNote::SetNoteOn (GisToken *note)
 
int ChordNote::SetNoteOff (GisToken *note)
 
void ChordNote::AddGis (GisToken *token)
 
void ChordNote::CheckCloseAlter ()
 
void ChordNote::CheckCloseTie ()
 
int ChordNote::MutNoteOn (int key, double pitch, int instrId, int taste, mutString sep)
 
int ChordNote::MutNoteOff ()
 
GisWriteHeadGisWriteHead::InsertAfter (GisWriteHead *position)
 
GisWriteHeadGisWriteHead::CutOut ()
 
ChordNoteGisWriteHead::GetFreeNote ()
 
ChordNoteGisWriteHead::GetNote (int instrId, int taste)
 
int GisWriteHead::ReadyForBoss ()
 
void GisWriteHead::RemoveComma ()
 
int GisWriteHead::CloseSubs (GisToken **cont=0)
 
int GisWriteHead::CloseCurrentToken (char insertRest=1)
 
int GisWriteHead::ProceedGis (GisToken *token, char turn=0)
 
void GisWriteHead::WriteChord ()
 
void GisWriteHead::AddTime (frac dTime)
 
void InputMidiFileTest::testBatchPlay1 ()
 
void InputMidiFileTest::testBug019010_2 ()
 
void InputMidiFileTest::testBug019010 ()
 
void InputMidiFileTest::testBankSelect ()
 
void InputMidiFileTest::testAllControllerOff ()
 
void InputMidiFileTest::testControllerPlay ()
 
bool OutputMidiFileTest::CheckOut (mutString s, int line, const mutChar *file)
 
void OutputMidiFileTest::setUp ()
 
void OutputMidiFileTest::tearDown ()
 
void OutputMidiFileTest::testNoteOnOff ()
 
void OutputMidiFileTest::testBatchPlay1 ()
 
void CommonMidiOutputTest::setUp ()
 
void CommonMidiOutputTest::tearDown ()
 
void CommonMidiOutputTest::testNoteOnOff ()
 
void CommonMidiOutputTest::testMoreNotesThanChannels ()
 
void CommonMidiInputTest::setUp ()
 
void CommonMidiInputTest::tearDown ()
 
void CommonMidiInputTest::testPanic ()
 
void CommonMidiInputTest::testGlobalPanic ()
 

Variablen

Box mutabor::BoxClass::ChangedCallback::box
 
enum
mutabor::BoxClass::logic_entry:: { ... }  
mutabor::BoxClass::logic_entry::flags
 
bool mutabor::BoxClass::logic_entry::active
 
std::string mutabor::BoxClass::logic_entry::name
 
std::string mutabor::BoxClass::logic_entry::startTuning
 
int mutabor::BoxClass::logic_entry::key
 
struct any_trigger mutabor::BoxClass::logic_entry::trigger
 
double mutabor::BoxClass::tone_entry::pitch
 
enum
mutabor::BoxClass::tone_entry:: { ... }  
mutabor::BoxClass::tone_entry::flag
 
int mutabor::BoxClass::tone_system::anchor
 
double mutabor::BoxClass::tone_system::period
 
tone_list mutabor::BoxClass::tone_system::tones
 
int mutabor::BoxClass::current_tone_entry::index
 
size_t mutabor::BoxClass::current_tone_entry::id
 
int mutabor::BoxClass::current_tone_entry::channel
 
Box mutabor::BoxClass::BoxLock::box
 
static listtype mutabor::BoxClass::boxList
 
static int mutabor::BoxClass::nextboxid = Box0
 
struct mutabor_box_type * mutabor::BoxClass::box
 
idtype< BoxClass > mutabor::BoxClass::session_id
 
int mutabor::BoxClass::routefile_id
 
routeListType mutabor::BoxClass::routes
 
bool mutabor::BoxClass::open
 
mutString mutabor::BoxClass::current_logic
 
mutString mutabor::BoxClass::current_tonesystem
 
int mutabor::BoxClass::current_key_tonesystem
 
int mutabor::BoxClass::current_key_logic
 
unsigned int mutabor::BoxClass::updateflags
 
std::list< ChangedCallback * > mutabor::BoxClass::callbacks
 
BoxClass * mutabor::BoxClass::set_callback::box
 
CompileCallback * mutabor::BoxClass::current_compile_callback
 
static
mutabor::hidden::mutabor_callback_type 
mutabor::BoxClass::backend_callbacks
 
Mutex mutabor::BoxClass::mutex
 
 mutabor::BoxClass::REFPTR_INTERFACE
 
int mutabor::BoxFactory::FactoryNotFound::id
 
std::string mutabor::BoxFactory::FactoryNotFound::message_
 
static factorylist mutabor::BoxFactory::factories
 
char mutabor::InDevChanged
 
static const size_t mutabor::ChannelData::IGNORE_UNIQUE_ID = ULONG_MAX
 
controller_vector mutabor::ChannelData::controller
 
controller_vector mutabor::ChannelData::controller_changed
 
size_t mutabor::ChannelData::first_unchanged
 
bool mutabor::ChannelData::looped
 
bool mutabor::ChannelData::data_is_rpn
 
int mutabor::ChannelData::Sound
 
uint8_t mutabor::ChannelData::bank_coarse
 
uint8_t mutabor::ChannelData::bank_fine
 
int mutabor::ChannelData::bend
 
idtype< Device > mutabor::Device::session_id
 Id used during runtime;. Mehr ...
 
int mutabor::Device::routefile_id
 
mutString mutabor::Device::Name
 
bool mutabor::Device::dirty:1
 
bool mutabor::Device::isOpen:1
 
enum MutaborModeType mutabor::Device::Mode
 
routeListType mutabor::Device::routes
 
void * mutabor::Device::userdata
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::REFPTR_INTERFACE
 
static listtype mutabor::CommonTypedDeviceAPI< T, P, L >::deviceList
 
Mutex mutabor::OutputDeviceClass::write_lock
 
int mutabor::InputDeviceClass::current_keys_type::entry::key
 
size_t mutabor::InputDeviceClass::current_keys_type::entry::unique_id
 
int mutabor::InputDeviceClass::current_keys_type::entry::velocity
 
Route mutabor::InputDeviceClass::current_keys_type::entry::route
 
InputDevice mutabor::InputDeviceClass::current_keys_type::entry::device
 
const ChannelData * mutabor::InputDeviceClass::current_keys_type::entry::settings
 
void * mutabor::InputDeviceClass::current_keys_type::entry::userdata
 
map_type mutabor::InputDeviceClass::current_keys_type::map
 
current_keys_type mutabor::InputDeviceClass::current_keys
 
Mutex mutabor::InputDeviceClass::write_lock
 
int mutabor::DeviceFactory::FactoryNotFound::id
 
std::string mutabor::DeviceFactory::FactoryNotFound::message_
 
static factorylist mutabor::DeviceFactory::factories
 
const mutCharTags [NTAGS]
 
const mutCharTagShorts [NTAGSHORTS]
 
GisTokenRoot
 
GisToken ** Current
 
GisTokenLastOpenBracket
 
GisTagBeginLastOpenRange
 
char TagMode
 
mutString TagName
 
mutString TagSep
 
GisTokenPara
 
GisTokenLastPara
 
int LastOctave
 
frac LastDuration
 
int debugcount = 0
 
const mutCharTags [NTAGS]
 
const mutCharTagShorts [NTAGSHORTS]
 
char ArticulationHold [5] = { 80, 100, 90, 90, 60 }
 
char ArticulationOff [5] = { 80, 80, 60, 127, 127 }
 
GisReadProceed GisReadDummy
 
GisReadArtProceed GisReadArtDummy
 
int GspCurrentLineNr
 
int GspErrorLineNr
 
int GspErrorPos
 
mutString GspErrorLine
 
int GspError
 
int PossibleErrorLineNr
 
int PossibleErrorPos
 
mutString PossibleErrorLine
 
mutString Sep = mutEmptyString
 
char ParaMode
 
char Komma
 
int NumberLength
 
mutString Brackets = mutEmptyString
 
char LastTag
 
static int octave
 
static mutString accedentials
 
static frac duration
 
mutChar SepChars [] = mutT(" \t\r\n")
 
mutChar DelimitChars [] = mutT("{}[]()")
 
bool minus
 
int GspCurrentLineNr
 
int GspErrorLineNr
 
int GspErrorPos
 
mutString GspErrorLine
 
int GspError
 
mutString Sep
 
const mutTranslationCharGspErrorText []
 
const mutTranslationCharGspErrorText []
 
mutString CurrentLine
 
size_t CurrentPos
 
int Eof
 
mutTextStreamFile
 
static bool initialized = false
 
static int bad = 0
 
mutString CurrentLine
 
size_t CurrentPos
 
int Eof
 
const mutString mutabor::RTName []
 
const mutString mutabor::DevTypeName []
 
Route mutabor::TRouteClass< I, O, B >::NoOutputDevice::route
 
Route mutabor::TRouteClass< I, O, B >::NoInputDevice::route
 
OutputDevice mutabor::TRouteClass< I, O, B >::Out
 
InputDevice mutabor::TRouteClass< I, O, B >::In
 
Box mutabor::TRouteClass< I, O, B >::box
 
static routeListType mutabor::TRouteClass< I, O, B >::routeList
 
idtype< TRouteClass< I, O > > mutabor::TRouteClass< I, O, B >::session_id
 
int mutabor::TRouteClass< I, O, B >::routefile_id
 
int mutabor::TRouteClass< I, O, B >::inputid
 
int mutabor::TRouteClass< I, O, B >::outputid
 
int mutabor::TRouteClass< I, O, B >::boxid
 
RouteType mutabor::TRouteClass< I, O, B >::Type
 
int mutabor::TRouteClass< I, O, B >::IFrom
 
int mutabor::TRouteClass< I, O, B >::ITo
 
bool mutabor::TRouteClass< I, O, B >::Active
 
int mutabor::TRouteClass< I, O, B >::OFrom
 
int mutabor::TRouteClass< I, O, B >::OTo
 
bool mutabor::TRouteClass< I, O, B >::ONoDrum
 
 mutabor::TRouteClass< I, O, B >::REFPTR_INTERFACE
 
RouteFactory * mutabor::RouteFactory::FactoryAlreadySet::old
 
RouteFactory * mutabor::RouteFactory::FactoryAlreadySet::created
 
static RouteFactory * mutabor::RouteFactory::factory
 Pointer to the current factory. Mehr ...
 

Freundbeziehungen

class mutabor::BoxClass::::mutaborGUI::BoxData
 
class mutabor::BoxClass::BoxFactory
 
class mutabor::Device::::mutaborGUI::GUIOutputDeviceBase
 
class mutabor::Device::::mutaborGUI::GUIInputDeviceBase
 
class mutabor::OutputDeviceClass::DeviceFactory
 
class mutabor::InputDeviceClass::DeviceFactory
 
class mutabor::TRouteClass< I, O, B >::RouteFactory
 
class mutabor::TRouteClass< I, O, B >::mutaborGUI::GUIRouteBase
 
void mutabor::BoxClass::initialize_box_data ()
 

Ausführliche Beschreibung

This group contains functions and classes that can be used to set up a generic event routing.

It uses the RtMidi library for MIDI access, but is kept independent from any GUI library.

Makro-Dokumentation

#define AddStr (   s1,
  s2,
  s3 
)    (s1 += s2 + s3)

Definiert in Zeile 500 der Datei GIS.cpp.

Wird benutzt von BeginParameter(), BeginRange() und EndParameter().

#define BracketDeep   (Brackets.Len())

Definiert in Zeile 78 der Datei GSP.cpp.

Wird benutzt von DoParse() und GspParse().

#define CHAR0   CurrentLine[CurrentPos]

Definiert in Zeile 214 der Datei GSP.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadLong(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

#define CHAR1   CurrentLine[CurrentPos+1]

Definiert in Zeile 215 der Datei GSP.cpp.

Wird benutzt von GetSep() und ReadParaStr().

#define CHECKDUP (   target,
  source 
)    target = source;
#define CNAlter   1

Definiert in Zeile 424 der Datei GIS_Head.h.

Wird benutzt von ChordNote::CheckCloseAlter(), ChordNote::MutNoteOff() und ChordNote::MutNoteOn().

#define CNNoteOn   2
#define DEFAULT_BENDING_RANGE   2l

Definiert in Zeile 53 der Datei midicmn.h.

Wird benutzt von mutabor::OutputMidiPort::Load().

#define DEVFMIDFTEST_H

Definiert in Zeile 38 der Datei DevMidFTest.h.

#define DEVFMIDFTEST_H_PRECOMPILED

Definiert in Zeile 44 der Datei DevMidFTest.h.

#define DeviceMaxType   DTGis+1

Definiert in Zeile 94 der Datei Device.h.

#define DRUMCHANNEL   9

Definiert in Zeile 65 der Datei Device.h.

#define FOR_MUTWIN

Definiert in Zeile 60 der Datei GIS.h.

#define GMN_NO_KEY   -32000

Definiert in Zeile 105 der Datei GIS.h.

Wird benutzt von ChordNote::ChordNote(), ChordNote::Cmp(), GisNote::GisNote() und ChordNote::MutNoteOn().

#define H_MMSYSTEM

Definiert in Zeile 46 der Datei DevMidF.cpp.

#define H_MMSYSTEM

Definiert in Zeile 63 der Datei DevMidi.h.

#define HIDE_MUTABOR_C_API

Definiert in Zeile 43 der Datei Box.h.

#define MIDICMNTEST_H

Definiert in Zeile 38 der Datei midicmnTest.h.

#define MIDICMNTEST_H_PRECOMPILED

Definiert in Zeile 48 der Datei midicmnTest.h.

#define MMSYSTEM_H

Definiert in Zeile 39 der Datei DevGIS.cpp.

#define MU32_ROUTING_DEVICE_H

Definiert in Zeile 37 der Datei Device.h.

#define MU32_ROUTING_DEVICE_H_PRECOMPILED

Definiert in Zeile 51 der Datei Device.h.

#define MU32_ROUTING_GMN_DEVGIS_H

Definiert in Zeile 36 der Datei DevGIS.h.

#define MU32_ROUTING_GMN_DEVGIS_H_PRECOMPILED

Definiert in Zeile 50 der Datei DevGIS.h.

#define MU32_ROUTING_GMN_GIS_H

Definiert in Zeile 43 der Datei GIS.h.

#define MU32_ROUTING_GMN_GIS_H_PRECOMPILED

Definiert in Zeile 54 der Datei GIS.h.

#define MU32_ROUTING_GMN_GIS_HEAD_H

Definiert in Zeile 40 der Datei GIS_Head.h.

#define MU32_ROUTING_GMN_GIS_HEAD_H_PRECOMPILED

Definiert in Zeile 52 der Datei GIS_Head.h.

#define MU32_ROUTING_GMN_GSP_FILE_H

Definiert in Zeile 39 der Datei GSP_File.h.

#define MU32_ROUTING_GMN_GSP_FILE_H_PRECOMPILED

Definiert in Zeile 50 der Datei GSP_File.h.

#define MU32_ROUTING_GMN_GSP_H

Definiert in Zeile 44 der Datei GSP.h.

#define MU32_ROUTING_GMN_GSP_H_PRECOMPILED

Definiert in Zeile 55 der Datei GSP.h.

#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H

Definiert in Zeile 36 der Datei CommonFileDevice.h.

#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H_PRECOMPILED

Definiert in Zeile 49 der Datei CommonFileDevice.h.

#define MU32_ROUTING_MIDI_DEVMIDF_H

Definiert in Zeile 42 der Datei DevMidF.h.

#define MU32_ROUTING_MIDI_DEVMIDF_H_PRECOMPILED

Definiert in Zeile 59 der Datei DevMidF.h.

#define MU32_ROUTING_MIDI_DEVMIDI_H

Definiert in Zeile 37 der Datei DevMidi.h.

#define MU32_ROUTING_MIDI_DEVMIDI_H_PRECOMPILED

Definiert in Zeile 51 der Datei DevMidi.h.

#define MU32_ROUTING_ROUTE_H

Definiert in Zeile 42 der Datei Route.h.

#define MU32_ROUTING_ROUTE_H_PRECOMPILED

Definiert in Zeile 56 der Datei Route.h.

#define MU32_ROUTING_ROUTE_INLINES_H

Definiert in Zeile 36 der Datei Route-inlines.h.

#define MU32_ROUTING_ROUTE_INLINES_H_PRECOMPILED

Definiert in Zeile 47 der Datei Route-inlines.h.

#define MU32_ROUTING_ROUTECOMPAT_H

Definiert in Zeile 42 der Datei RouteCompat.h.

#define MU32_ROUTING_ROUTECOMPAT_H_PRECOMPILED

Definiert in Zeile 53 der Datei RouteCompat.h.

#define MUTABOR_NO_DELTA   (std::numeric_limits<mutint64>::max())
#define MUTABOR_THREAD_OK   wxMUTEX_NO_ERROR

Definiert in Zeile 137 der Datei thread.h.

#define NEW_LINE   mutT("\n")

Definiert in Zeile 93 der Datei GSP.cpp.

Wird benutzt von GetSep() und ReadParaStr().

#define NOTE   ((GisNote*)note)

Definiert in Zeile 838 der Datei GIS_Head.cpp.

Wird benutzt von ChordNote::SetNoteOn().

#define NOTE1   ((GisNote*)note1)

Definiert in Zeile 753 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

#define NOTE2   ((GisNote*)note2)

Definiert in Zeile 754 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

#define NTAGS   52

Definiert in Zeile 83 der Datei GIS.h.

Wird benutzt von GetTagId().

#define NTAGSHORTS   6

Definiert in Zeile 84 der Datei GIS.h.

Wird benutzt von GetTagId().

#define READCONFIGINT (   config,
  name,
  variable,
  defval 
)
Wert:
variable = config.Read(_T(name),defval); \
DEBUGLOG2(config,_T("Read " name " = %d"),variable);
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147

Definiert in Zeile 348 der Datei Route.cpp.

#define READCONFIGSTR (   config,
  name,
  variable,
  defval 
)
Wert:
variable = config.Read(_T(name),defval); \
DEBUGLOG2(config,_T("Read " name " = %s"),variable.c_str());
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147

Definiert in Zeile 344 der Datei Route.cpp.

#define ROUTING_BOX_H

Definiert in Zeile 36 der Datei Box.h.

#define ROUTING_BOX_H_PRECOMPILED

Definiert in Zeile 53 der Datei Box.h.

#define ROUTING_BOX_INLINES

Definiert in Zeile 35 der Datei Box-inlines.h.

#define ROUTING_BOX_INLINES_PRECOMPILED

Definiert in Zeile 48 der Datei Box-inlines.h.

#define ROUTING_DEVICE_INLINES

Definiert in Zeile 35 der Datei Device-inlines.h.

#define ROUTING_DEVICE_INLINES_PRECOMPILED

Definiert in Zeile 46 der Datei Device-inlines.h.

#define ROUTING_MIDICMN_H

Definiert in Zeile 36 der Datei midicmn.h.

#define ROUTING_MIDICMN_H_PRECOMPILED

Definiert in Zeile 48 der Datei midicmn.h.

#define ROUTING_TIMINGPARAMS

Definiert in Zeile 35 der Datei timing.h.

#define ROUTING_TIMINGPARAMS_PRECOMPILED

Definiert in Zeile 46 der Datei timing.h.

#define SepPos   SepPos()

Definiert in Zeile 66 der Datei GSP.cpp.

Wird benutzt von GetSep(), ReadLong(), ReadNote(), ReadParaNumber() und ReadTag().

#define SRC_KERNEL_ROUTING_THREAD_H

Definiert in Zeile 36 der Datei thread.h.

#define SRC_KERNEL_ROUTING_THREAD_H_PRECOMPILED

Definiert in Zeile 46 der Datei thread.h.

#define strdupchr (   a)    (a)

Definiert in Zeile 339 der Datei GIS.cpp.

Wird benutzt von GisNote::GisNote().

#define TAG   ((GisTag*)Cursor)

Definiert in Zeile 513 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

#define TAGEND   ((GisTagEnd*)Cursor)

Definiert in Zeile 514 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

#define TAKESEP   takesep()

Definiert in Zeile 223 der Datei GSP.cpp.

Wird benutzt von GetSep().

#define TTaccent   22

Definiert in Zeile 96 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTalter   50

Definiert in Zeile 100 der Datei GIS.h.

Wird benutzt von ChordNote::MutNoteOn(), mutabor::InputGis::Proceed() und GisReadArtHead::Read().

#define TTinstr   19

Definiert in Zeile 93 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTintens   1

Definiert in Zeile 90 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTkey   36

Definiert in Zeile 98 der Datei GIS.h.

Wird benutzt von GisWriteHead::ProceedGis().

#define TTmutabor   51

Definiert in Zeile 101 der Datei GIS.h.

Wird benutzt von mutabor::InputGis::Proceed().

#define TToct   37

Definiert in Zeile 99 der Datei GIS.h.

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

#define TTslur   2

Definiert in Zeile 91 der Datei GIS.h.

#define TTstacc   21

Definiert in Zeile 95 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTtempo   12

Definiert in Zeile 92 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTten   23

Definiert in Zeile 97 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTtie   20

Definiert in Zeile 94 der Datei GIS.h.

Wird benutzt von ChordNote::CheckCloseTie().

#define uchar   unsigned char

Definiert in Zeile 98 der Datei GSP.cpp.

#define WTAG   ((GisTag*)(*Cursor))

Definiert in Zeile 1255 der Datei GIS_Head.cpp.

Wird benutzt von GisWriteHead::ProceedGis().

#define WTAGEND   ((GisTagEnd*)token)

Definiert in Zeile 1256 der Datei GIS_Head.cpp.

Wird benutzt von GisWriteHead::ProceedGis().

#define ZIFFER   (mutT('0') <= t[i] && t[i] <= mutT('9'))

Definiert in Zeile 88 der Datei GIS_Head.cpp.

Wird benutzt von GetTheSpeedFactor().

Dokumentation der benutzerdefinierten Typen

Definiert in Zeile 132 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef B mutabor::TRouteClass< I, O, B >::Box

Definiert in Zeile 114 der Datei Route.h.

typedef boost::intrusive_ptr< BoxClass > mutabor::Box

Definiert in Zeile 118 der Datei Box.h.

typedef std::vector<Box> mutabor::BoxListType

Definiert in Zeile 120 der Datei Box.h.

Definiert in Zeile 1017 der Datei Device.h.

typedef std::vector<int> mutabor::ChannelData::controller_vector

Definiert in Zeile 101 der Datei Device.h.

typedef std::vector<current_tone_entry> mutabor::BoxClass::current_tone_list

Definiert in Zeile 431 der Datei Box.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
typedef P mutabor::CommonTypedDeviceAPI< T, P, L >::DevicePtr

Definiert in Zeile 665 der Datei Device.h.

typedef hidden::mutabor_error_type mutabor::error_type

Definiert in Zeile 102 der Datei Box.h.

typedef std::vector<BoxFactory *> mutabor::BoxFactory::factorylist
protected

Definiert in Zeile 773 der Datei Box.h.

typedef std::vector<DeviceFactory *> mutabor::DeviceFactory::factorylist
protected

Definiert in Zeile 1351 der Datei Device.h.

typedef void GisReadArtProceed(GisReadArtHead *token, char turn)

Definiert in Zeile 303 der Datei GIS_Head.h.

typedef void GisReadProceed(GisReadHead *, char)

Definiert in Zeile 137 der Datei GIS_Head.h.

typedef struct harmonie_ereignis mutabor::hidden::harmony_action

Definiert in Zeile 77 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef I mutabor::TRouteClass< I, O, B >::InputDevice

Definiert in Zeile 112 der Datei Route.h.

typedef boost::intrusive_ptr< InputDeviceClass > mutabor::InputDevice

Definiert in Zeile 968 der Datei Device.h.

typedef CommonTypedDeviceAPI<InputDeviceClass>::listtype mutabor::InputDeviceList

Definiert in Zeile 970 der Datei Device.h.

Definiert in Zeile 1016 der Datei Device.h.

typedef struct keyboard_ereignis mutabor::hidden::keyboard_action

Definiert in Zeile 75 der Datei Box.h.

typedef BoxListType mutabor::BoxClass::listtype

Definiert in Zeile 159 der Datei Box.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
typedef L mutabor::CommonTypedDeviceAPI< T, P, L >::listtype

Definiert in Zeile 666 der Datei Device.h.

typedef std::list<logic_entry> mutabor::BoxClass::logic_list

Definiert in Zeile 388 der Datei Box.h.

typedef boost::unordered_multiset<entry, hash_type> mutabor::InputDeviceClass::current_keys_type::map_type

Definiert in Zeile 1015 der Datei Device.h.

typedef struct midi_ereignis mutabor::hidden::midi_action

Definiert in Zeile 76 der Datei Box.h.

typedef std::vector< uint8_t > mutabor::midi_string

Definiert in Zeile 73 der Datei Device.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef O mutabor::TRouteClass< I, O, B >::OutputDevice

Definiert in Zeile 113 der Datei Route.h.

typedef boost::intrusive_ptr< OutputDeviceClass > mutabor::OutputDevice

Definiert in Zeile 809 der Datei Device.h.

typedef CommonTypedDeviceAPI<OutputDeviceClass>::listtype mutabor::OutputDeviceList

Definiert in Zeile 811 der Datei Device.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef boost::intrusive_ptr<TRouteClass> mutabor::TRouteClass< I, O, B >::Route

Definiert in Zeile 117 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box>::Route mutabor::Route

Definiert in Zeile 542 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box> mutabor::RouteClass

Definiert in Zeile 543 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef std::list<Route> mutabor::TRouteClass< I, O, B >::routeListType

Definiert in Zeile 118 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box>::routeListType mutabor::routeListType

Definiert in Zeile 544 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef std::list<thistype *> mutabor::TRouteClass< I, O, B >::routePtrList

Definiert in Zeile 119 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box>::routePtrList mutabor::routePtrList

Definiert in Zeile 545 der Datei Route.h.

typedef struct TagListData TagList
template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef TRouteClass mutabor::TRouteClass< I, O, B >::thistype

Definiert in Zeile 111 der Datei Route.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
typedef T mutabor::CommonTypedDeviceAPI< T, P, L >::thistype

Definiert in Zeile 664 der Datei Device.h.

typedef std::vector<tone_entry> mutabor::BoxClass::tone_list

Definiert in Zeile 406 der Datei Box.h.

Dokumentation der Aufzählungstypen

anonymous enum
Aufzählungswerte
none 
Logic 
CurrentLogic 

Definiert in Zeile 380 der Datei Box.h.

anonymous enum
Aufzählungswerte
sounding 
silent 
invalid 

Definiert in Zeile 400 der Datei Box.h.

enum ARType
Aufzählungswerte
ARNormal 
ARSlur 
ARTenuto 
ARPortato 
ARStaccatto 

Definiert in Zeile 59 der Datei GIS_Head.h.

Aufzählungswerte
IDTypeSession 
IDTypeFile 

Definiert in Zeile 126 der Datei Box.h.

Aufzählungswerte
MIN_BOX 
NewBox 
NoBox 
GmnBox 
Box0 

Definiert in Zeile 109 der Datei Box.h.

110  {
111  MIN_BOX = -3,
112  NewBox = -3,
113  NoBox,
114  GmnBox,
115  Box0 = 0
116  };
Aufzählungswerte
BoxChanged 
LogicChanged 
KeysChanged 
ActionChanged 

Definiert in Zeile 134 der Datei Box.h.

Aufzählungswerte
IDTypeSession 
IDTypeFile 
IDTypeHardware 

Definiert in Zeile 475 der Datei Device.h.

Aufzählungswerte
DTNotSet 
DTUnknown 
DTMidiPort 
DTMidiFile 
DTGis 

Definiert in Zeile 89 der Datei Device.h.

enum GisType
Aufzählungswerte
GTNull 
GTUnknown 
GTSequenz 
GTSegment 
GTTag 
GTTagBegin 
GTTagEnd 
GTNote 
GTParaInt 
GTParaReal 
GTParaStr 
GTComma 

Definiert in Zeile 114 der Datei GIS.h.

115 {
116  GTNull,
117  GTUnknown, // 1
118  GTSequenz, // 2
119  GTSegment,
120  GTTag,
121  GTTagBegin, // 5
122  GTTagEnd,
123  GTNote, // 7
124  GTParaInt,
125  GTParaReal,
126  GTParaStr, // 10
127  GTComma
128 };
Definition: GIS.h:123
Definition: GIS.h:119
Definition: GIS.h:120
Definition: GIS.h:116
Definition: GIS.h:122
Definition: GIS.h:127
Definition: GIS.h:117
Definition: GIS.h:124
Definition: GIS.h:118
Definition: GIS.h:126
Aufzählungswerte
KeyboardNoLogic 
KeyboardLogic 
KeyboardAny 

Definiert in Zeile 492 der Datei Box.h.

492  {
493  KeyboardNoLogic, // Execute only logics
494  KeyboardLogic, // Execute only tone systems
495  KeyboardAny // Any possible action
496  };
Aufzählungswerte
DeviceUnregistered 
DeviceInitializing 
DeviceStop 
DevicePlay 
DevicePause 
DeviceCompileError 
DeviceTimingError 
DeviceKilled 

Definiert in Zeile 75 der Datei Device.h.

75  {
76  DeviceUnregistered = -1, //< Unregistered device – currently unused
77  DeviceInitializing, //< Intitialization phase (e.g. thread creation)
78  DeviceStop, //< Device is OK, but no playback.
79  DevicePlay, //< Playback is running
80  DevicePause, //< Playback is paused
81  DeviceCompileError, //< Error while compiling/decoding the file (file propably corrupted)
82  DeviceTimingError, //< Timing problems e.g. backwards runnig time in a file. May be reset after Stop()
83  DeviceKilled //< A problem that makes the device (probably) unusable.
84  };

Type of route input filter.

Aufzählungswerte
RTall 

all events will pass

RTelse 

all unhandled events will pass

RTchannel 

use only a certain channel range (depends on the input device type)

RTstaff 

use only a certain staff/track/… range (depends on the input device type)

Definiert in Zeile 78 der Datei Route.h.

79  {
80  RTall,
81  RTelse,
82  RTchannel,
83  RTstaff
84  };
use only a certain staff/track/… range (depends on the input device type)
Definition: Route.h:83
all events will pass
Definition: Route.h:80
use only a certain channel range (depends on the input device type)
Definition: Route.h:82
all unhandled events will pass
Definition: Route.h:81
Aufzählungswerte
wxTHREAD_WAIT_BLOCK 
wxTHREAD_WAIT_YIELD 
wxTHREAD_WAIT_DEFAULT 

Definiert in Zeile 1109 der Datei Device.h.

Dokumentation der Funktionen

int Acc2Int ( const mutString  acc)

Definiert in Zeile 316 der Datei GIS.cpp.

Benutzt mutLen.

Wird benutzt von GisNote::GetKey().

318 {
319  if ( !acc ) return 0;
320 
321  int i = 0;
322 
323 #ifdef WX
324  for (size_t j = 0; j < mutLen(acc); j++)
325 #else
326  for (int j = 0; acc[j]; j++)
327 #endif
328  {
329 
330  if ( acc[j] == '&' )
331  i--;
332  else if ( acc[j] == '#' )
333  i++;
334  }
335  return i;
336 }
#define mutLen(x)
Definition: Defs.h:97
std::string mutabor::BoxClass::ActionToString ( ChangedCallback::action action)

Definiert in Zeile 824 der Datei Box.cpp.

Benutzt mutabor::hidden::do_aktion::name.

824  {
825  std::string retval = action->name;
826  return retval;
827  }
virtual void mutabor::BoxClass::Activate ( )
inlinevirtual

Activate the current box.

This method is called when a box is being activated. Its implementation should be done in the user code. Otherwise its just a no-op function.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 589 der Datei Box.h.

589 {}
bool mutabor::BoxClass::ActivateAll ( bool  isRealtime)
static

Activate all boxes.

This resets the action traces of all boxes.

Zu beachten
Code should be taken from MutFrame::DoActivate
Parameter
isRealtimeShall non-realtime devices (e.g., file devices) act in realtime mode or not
Rückgabewerte
trueif Activation succeeded
falseotherwise

Definiert in Zeile 459 der Datei Box.cpp.

Benutzt mutabor::CurrentTime, mutabor::OpenAll() und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von mutaborGUI::MutFrame::CmDoActivate().

459  {
460  CurrentTime.UseRealtime(realtime);
462  BoxClass_CallReset callreset;
463 
464  std::for_each(boxList.begin(),boxList.end(),callreset);
465  //AktionenInit();
466 
467  // In batch mode Batch Play handles open and close.
468  bool retval = realtime ? OpenAll() : true;
469 
470  if (!boxList.empty()) {
471  mutabor::Box b = boxList.front();
472  if (b) b->Activate();
473  }
474  return retval;
475  }
static listtype boxList
Definition: Box.h:643
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
bool OpenAll()
Definition: Box.cpp:423
CurrentTimer CurrentTime
Definition: timing.cpp:43
void mutabor::BoxClass::Add ( Route route)
virtual

add a route

Definiert in Zeile 126 der Datei Box.cpp.

Benutzt DEBUGLOG, mutASSERT und TRACEC.

126  {
127  BoxLock lock(this);
128  DEBUGLOG(smartptr,_T("Route; %p"),(void*)route.get());
129 #ifdef DEBUG
130  routeListType::const_iterator i =
131  find(routes.begin(),routes.end(),route);
132  mutASSERT(i == routes.end());
133  mutASSERT(IsInBoxList(this));
134 #endif
135  TRACEC;
136  routes.push_back(route);
137  DEBUGLOG(smartptr,_T("Route; %p saved"),(void*)route.get());
138  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
#define TRACEC
Definition: mutDebug.h:151
#define mutASSERT
Definition: Defs.h:222
routeListType routes
Definition: Box.h:651
static bool IsInBoxList(const Box b)
Definition: Box.h:697
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Add ( OutputDevice out)
virtual

add a new output device

Definiert in Zeile 141 der Datei Route.cpp.

141  {
142  Out = out;
143  }
OutputDevice Out
Definition: Route.h:460
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::Add ( InputDevice in)
virtual

add a new input device

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::Add ( Box b)
virtual

add a new box

virtual void mutabor::Device::Add ( Route route)
pure virtual
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::Add ( Route route)
virtual

add a route

Implementiert mutabor::Device.

Definiert in Zeile 142 der Datei Device.cpp.

Benutzt DEBUGLOG, mutASSERT und TRACEC.

Wird benutzt von mutabor::CommonTypedDeviceAPI< T, P, L >::Replace().

142  {
143  DEBUGLOG(smartptr,_T("Route; %p"),(void*)route.get());
144 #ifdef DEBUG
145  routeListType::const_iterator i =
146  find(routes.begin(),routes.end(),route);
147  mutASSERT(i == routes.end());
148  mutASSERT(IsInDeviceList(static_cast<thistype *>(this)));
149 #endif
150  TRACEC;
151  routes.push_back(route);
152  DEBUGLOG(smartptr,_T("Route; %p saved"),(void*)route.get());
153  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
routeListType routes
Definition: Device.h:627
#define TRACEC
Definition: mutDebug.h:151
#define mutASSERT
Definition: Defs.h:222
static bool IsInDeviceList(const DevicePtr dev)
Definition: Device.h:796
void mutabor::InputDeviceClass::current_keys_type::add ( int  key,
int  velocity,
int  unique_id,
Route R,
InputDevice  i,
const ChannelData c,
void *  userdata 
)
inline

Definiert in Zeile 1019 der Datei Device.h.

Benutzt DEBUGLOG und mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von mutabor::InputDeviceClass::NoteOn() und mutabor::InputDeviceClass::Panic().

1025  {
1026  map.insert(entry(key,
1027  unique_id,
1028  velocity,
1029  R,
1030  i,
1031  &c,
1032  userdata));
1033  DEBUGLOG(routing,_T("(key = %d, channel = %lu, id = %lu)"),
1034  key,
1035  (unsigned long)R->get_session_id(),
1036  (unsigned long)unique_id);
1037  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void * userdata
Definition: Device.h:650
void mutabor::InputDeviceClass::current_keys_type::add ( entry  e)
inline

Definiert in Zeile 1038 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1038  {
1039  map.insert(e);
1040  }
void ChordNote::AddGis ( GisToken token)

Definiert in Zeile 865 der Datei GIS_Head.cpp.

Benutzt ChordNote::CurrentTime, ChordNote::Cursor, ChordNote::LastSep und GisToken::Sep.

Wird benutzt von ChordNote::CheckCloseAlter(), ChordNote::CheckCloseTie(), ChordNote::ChordNote(), GisWriteHead::GetFreeNote() und ChordNote::MutNoteOn().

866 {
867  *Cursor = token;
868  Cursor = &((*Cursor)->Next);
869  LastSep = &(token->Sep);
870  CurrentTime = 0;
871 }
GisToken ** Cursor
Definition: GIS_Head.h:437
mutString * LastSep
Definition: GIS_Head.h:447
mutString Sep
Definition: GIS.h:137
frac CurrentTime
Definition: GIS_Head.h:439
void mutabor::BoxClass::AddNote ( int  note,
size_t  id,
size_t  channel,
void *  userdata 
)
inline

Definiert in Zeile 482 der Datei Box.h.

Benutzt mutabor::hidden::AddKey() und mutabor::BoxClass::box.

482  {
483  BoxLock lock(this);
484  hidden::AddKey(box, note, id, channel, userdata);
485  }
struct mutabor_box_type * box
Definition: Box.h:648
void AddKey(mutabor_box_type *box, int taste, size_t id, size_t channel, void *userdata)
Definition: Execute.cpp:911
void AddStr ( mutString Target,
int  Pos,
const mutString Source 
)
inline

Definiert in Zeile 104 der Datei GSP.cpp.

Benutzt DEBUGLOG2 und mutUnused.

Wird benutzt von GetSep() und ReadParaStr().

105 {
106  mutUnused(Pos);
107  DEBUGLOG2(other,_T("%s + %s"), Target.c_str(), Source.c_str());
108  Target += Source;
109  DEBUGLOG2(other,_T("=%s"), Target.c_str());
110 }
#define mutUnused(expr)
Definition: Defs.h:79
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
TagList* AddTag ( TagList **  list,
GisTag tag 
)

Definiert in Zeile 480 der Datei GIS_Head.cpp.

Benutzt GTTag, TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

481 {
482  if ( *list && (*list)->Tag->Type() == GTTag && tag->Type() == GTTag )
483  RemoveTag(list);
484 
485  TagList *TopTag = new TagList;
486 
487  TopTag->Next = *list;
488 
489  TopTag->Tag = tag;
490 
491  *list = TopTag;
492 
493  return *list;
494 }
Definition: GIS.h:120
struct TagListData * Next
Definition: GIS_Head.h:148
GisTag * Tag
Definition: GIS_Head.h:149
struct TagListData TagList
TagList * RemoveTag(TagList **list)
Definition: GIS_Head.cpp:469
virtual GisType Type() const
Definition: GIS.h:335
void GisWriteHead::AddTime ( frac  dTime)

Definiert in Zeile 1432 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::AddTime(), GisWriteHead::ChordNotes, ChordNote::CountOnTime(), GisWriteHead::CurrentTime, GisWriteHead::Next und GisWriteHead::TotalTime.

Wird benutzt von GisWriteHead::AddTime() und mutabor::OutputGis::do_AddTime().

1433 {
1434  TotalTime += dTime;
1435  CurrentTime += dTime;
1436 
1437  if ( ChordNotes ) ChordNotes->CountOnTime(dTime);
1438 
1439  if ( Next ) Next->AddTime(dTime);
1440 }
ChordNote * ChordNotes
Definition: GIS_Head.h:325
frac CurrentTime
Definition: GIS_Head.h:321
void CountOnTime(frac dTime)
Definition: GIS_Head.cpp:829
void AddTime(frac dTime)
Definition: GIS_Head.cpp:1432
frac TotalTime
Definition: GIS_Head.h:321
GisWriteHead * Next
Definition: GIS_Head.h:317
void mutabor::OutputDeviceClass::AddTime ( frac  time)
inline

Definiert in Zeile 863 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_AddTime() und mutabor::OutputDeviceClass::write_lock.

863  {
864  ScopedLock lock(write_lock);
865  do_AddTime(time);
866  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_AddTime(frac time)=0
void mutabor::BoxClass::AppendToBoxList ( Box  dev)
staticprotected

Definiert in Zeile 282 der Datei Box.cpp.

Benutzt DEBUGLOG2, isDebugFlag, print_stacktrace() und UNREACHABLECT.

Wird benutzt von mutabor::BoxClass::BoxClass().

283  {
284 #ifdef DEBUG
285  DEBUGLOG2(routing,_T("Adding box %p"),b.get());
286  print_stacktrace(isDebugFlag(smartptr));
287  typename listtype::iterator i =
288  FindInBoxList(b);
289  if (i != boxList.end()) {
291  }
292 #endif
293  boxList.push_back(b);
294  }
static listtype boxList
Definition: Box.h:643
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define isDebugFlag(level)
Definition: mutDebug.h:109
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:690
BoxListType listtype
Definition: Box.h:159
void print_stacktrace(bool flag)
Definition: mutDebug.cpp:194
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::AppendToDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 301 der Datei Device.cpp.

Benutzt UNREACHABLECT.

Wird benutzt von mutabor::CommonTypedDeviceAPI< InputDeviceClass >::CommonTypedDeviceAPI().

302  {
303 #ifdef DEBUG
304  typename listtype::iterator i =
305  FindInDeviceList(dev);
306  if (i != deviceList.end()) {
308  }
309 #endif
310  deviceList.push_back(dev);
311  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:789
static listtype deviceList
Definition: Device.h:668
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::AppendToRouteList ( Route  route)
staticprotected

Definiert in Zeile 282 der Datei Route.cpp.

Benutzt mutASSERT und TRACET.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::TRouteClass().

283  {
284 #ifdef DEBUG
285  typename TRouteClass<I, O>::routeListType::iterator r =
286  std::find(routeList.begin(),
287  routeList.end(),
288  route.get());
289  mutASSERT(r == routeList.end());
290 #endif
291  TRACET(thistype);
292  routeList.push_back(route);
293  }
static routeListType routeList
Definition: Route.h:469
#define TRACET(type)
Definition: mutDebug.h:152
#define mutASSERT
Definition: Defs.h:222
TRouteClass thistype
Definition: Route.h:111
bool mutabor::InputDeviceClass::BatchPlay ( )
static

Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex route environment.

In contrast to the normal Play() function this function doesn't use timers, but simulates timing.

Noch zu erledigen:
{find a better place for BatchPlay and RealtimePlay: we should not reference CurrentTime from Device.{h,cpp,-inlines.h} }
Noch zu erledigen:
implement event types that use timestamps

Definiert in Zeile 455 der Datei Device.cpp.

Benutzt mutabor::BoxClose(), mutabor::CurrentTime, mutabor::CommonTypedDeviceAPI< InputDeviceClass >::deviceList, mutabor::CurrentTimer::Get(), mutabor::InClose(), MUTABOR_NO_DELTA, mutASSERT, mutint64, mutabor::OpenAll(), mutabor::OutClose(), mutabor::CurrentTimer::Set(), mutabor::CurrentTimer::Stop() und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), OutputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBug019010() und InputMidiFileTest::testControllerPlay().

455  {
456  // Note::keep this function in sync with Activate (Runtime.cpp)
457  typedef std::pair <mutint64, InputDevice> queue_element;
458  typedef std::priority_queue< queue_element,
459  std::deque<queue_element>,
460  std::greater<queue_element> > batch_queue;
461  // Currenttime is used by output devices to keep track of the time
463  CurrentTime.UseRealtime(false);
464  CurrentTime.Set(0);
465 
466 
467  OpenAll();
468 
469  batch_queue queue;
470 
471  for (InputDeviceList::iterator i = deviceList.begin();
472  i != deviceList.end(); i++) {
473  (*i)->Play();
474  queue.push(queue_element(0,*i));
475  }
476 
477  mutASSERT(CurrentTime.Get() == 0);
478 
479  while (!queue.empty()) {
480  queue_element element = queue.top();
481  queue.pop();
482  mutASSERT(element.first >= CurrentTime.Get());
483  CurrentTime = element.first;
484  mutint64 delta = element.second->PrepareNextEvent();
485  if (delta != MUTABOR_NO_DELTA) {
486  mutASSERT(delta >= 0);
487  element.first += delta;
488  queue.push(element);
489  }
490  }
491 
492  for (InputDeviceList::iterator i = deviceList.begin();
493  i != deviceList.end(); i++) {
494  (*i)->Stop();
495  }
496 
501 
502 // GlobalReset();
503 
504  return true;
505  }
void OutClose()
Definition: Device.cpp:704
void Stop()
Dummy function for stopping the timer.
Definition: timing.h:507
void BoxClose()
Definition: Box.h:824
mutint64 Get()
Return the current time in μs.
Definition: timing.h:498
#define MUTABOR_NO_DELTA
Definition: timing.h:62
void InClose()
Definition: Device.cpp:740
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
#define mutASSERT
Definition: Defs.h:222
void Set(mutint64 t=0)
Set the current time.
Definition: timing.h:484
#define mutint64
Definition: Defs.h:70
bool OpenAll()
Definition: Box.cpp:423
CurrentTimer CurrentTime
Definition: timing.cpp:43
iterator mutabor::InputDeviceClass::current_keys_type::begin ( )
inline
const_iterator mutabor::InputDeviceClass::current_keys_type::begin ( ) const
inline

Definiert in Zeile 1070 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1070 { return map.begin(); }
int BeginParameter ( )

Definiert in Zeile 631 der Datei GIS.cpp.

Benutzt AddStr, DEBUGLOG2, mutT und TagSep.

Wird benutzt von ReadTag().

632 {
633  DEBUGLOG2(gmnfile,_T("<"));
634  AddStr(TagSep, mutT("<"), Sep);
635  return 0;
636 }
mutString TagSep
Definition: GIS.cpp:116
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:500
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define mutT
Definition: Defs.h:77
mutString Sep
Definition: GSP.cpp:59
int BeginRange ( )

Definiert in Zeile 650 der Datei GIS.cpp.

Benutzt AddStr, Clear(), DEBUGLOG2, GisTagBegin::End, LastOpenRange, mutT, GisToken::Next, GisToken::Sep, Tag(), TagMode, TagName und TagSep.

Wird benutzt von DoParse().

651 {
652  DEBUGLOG2(gmnfile,_T("( "));
653 
654  if ( LastPara )
655  AddStr(LastPara->Sep, mutT("("), Sep);
656  else if ( Para )
657  AddStr(Para->Sep, mutT("("), Sep);
658  else
659  AddStr(TagSep, mutT("("), Sep);
660 
662 
663  *Current = Tag;
664 
665  Current = &(Tag->Next);
666 
667  Tag->End = LastOpenRange;
668 
669  LastOpenRange = Tag;
670 
671  Clear(&TagName);
672 
673  Clear(&TagSep);
674 
675  Para = 0;
676 
677  LastPara = 0;
678 
679  TagMode = 0;
680 
681  return 0;
682 }
char TagMode
Definition: GIS.cpp:112
GisTagBegin * LastOpenRange
Definition: GIS.cpp:110
mutString Sep
Definition: GIS.h:137
mutString TagSep
Definition: GIS.cpp:116
GisToken * End
Definition: GIS.h:373
GisToken * Para
Definition: GIS.cpp:118
GisToken * Next
Definition: GIS.h:136
void Clear(mutString *s)
Definition: GIS.cpp:501
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:500
mutString TagName
Definition: GIS.cpp:114
GisToken * LastPara
Definition: GIS.cpp:118
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
int Tag(const mutString tagName)
Definition: GIS.cpp:735
#define mutT
Definition: Defs.h:77
mutString Sep
Definition: GSP.cpp:59
int BeginSegment ( )

Definiert in Zeile 563 der Datei GIS.cpp.

Benutzt BuildTag(), GisSegment::Contents, DEBUGLOG2 und TagMode.

Wird benutzt von DoParse().

564 {
565  DEBUGLOG2(gmnfile,_T("{"));
566 
567  if ( TagMode ) BuildTag();
568 
569  GisSegment *Seg = new GisSegment(0, Sep, LastOpenBracket);
570 
571  LastOpenBracket = Seg;
572 
573  *Current = Seg;
574 
575  Current = &(Seg->Contents);
576 
577  return 0;
578 }
char TagMode
Definition: GIS.cpp:112
int BuildTag()
Definition: GIS.cpp:538
GisToken * Contents
Definition: GIS.h:249
GisToken * LastOpenBracket
Definition: GIS.cpp:108
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
int BeginSequenz ( )

Definiert in Zeile 597 der Datei GIS.cpp.

Benutzt BuildTag(), GisSequenz::Contents, DEBUGLOG2 und TagMode.

Wird benutzt von DoParse().

598 {
599  DEBUGLOG2(gmnfile,_T("["));
600 
601  if ( TagMode ) BuildTag();
602 
603  GisSequenz *Seq = new GisSequenz(0, Sep, LastOpenBracket);
604 
605  LastOpenBracket = Seq;
606 
607  *Current = Seq;
608 
609  Current = &(Seq->Contents);
610 
611  return 0;
612 }
char TagMode
Definition: GIS.cpp:112
int BuildTag()
Definition: GIS.cpp:538
GisToken * LastOpenBracket
Definition: GIS.cpp:108
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
GisToken * Contents
Definition: GIS.h:199
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction ( int  flags)
pure virtual
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction ( const char *  action)
inlinevirtual

Erneute Implementation in MutTextBox.

Definiert in Zeile 156 der Datei Box.h.

156 {}
mutabor::BoxClass::BoxClass ( int  id = -1)
protected

Definiert in Zeile 777 der Datei Box.cpp.

Benutzt mutabor::BoxClass::AppendToBoxList(), mutabor::hidden::mutabor_initialize_box(), mutabor::BoxClass::set_routefile_id() und mutabor::hidden::mutabor_box_type::userdata.

777  : box(NULL),
778  session_id(),
780  routes(),
781  open (false),
782  current_logic(),
786  updateflags(0),
787  callbacks(),
789  mutex() {
790  AppendToBoxList(this);
791  box = (mutabor_box_type *) malloc(sizeof(mutabor_box_type));
792  if (!box) return;
794  box->userdata = this;
795  set_routefile_id(id);
796  }
mutString current_tonesystem
Definition: Box.h:654
CompileCallback * current_compile_callback
Definition: Box.h:670
void mutabor_initialize_box(mutabor_box_type *box, int id)
Definition: box.cpp:129
virtual void set_routefile_id(int id)
Definition: Box.cpp:99
struct mutabor_box_type * box
Definition: Box.h:648
int current_key_tonesystem
Definition: Box.h:655
mutString current_logic
Definition: Box.h:653
unsigned int updateflags
Definition: Box.h:657
Mutex mutex
Definition: Box.h:672
struct mutabor_box_type mutabor_box_type
Definition: box.h:193
std::list< ChangedCallback * > callbacks
Definition: Box.h:658
idtype< BoxClass > session_id
Definition: Box.h:649
static void AppendToBoxList(Box dev)
Definition: Box.cpp:282
routeListType routes
Definition: Box.h:651
int current_key_logic
Definition: Box.h:656
int routefile_id
Definition: Box.h:650
void mutabor::BoxClose ( )
inline

Definiert in Zeile 824 der Datei Box.h.

Benutzt mutabor::BoxClass::GetBoxList().

Wird benutzt von mutabor::InputDeviceClass::BatchPlay().

825  {
826  const BoxListType& list = BoxClass::GetBoxList();
827  for (BoxListType::const_iterator b = list.begin();
828  b != list.end(); b++)
829  (*b)->Close();
830  }
std::vector< Box > BoxListType
Definition: Box.h:120
mutabor::BoxFactory::BoxFactory ( size_t  id = 0)

Definiert in Zeile 898 der Datei Box.cpp.

Benutzt mutabor::BoxFactory::factories und UNREACHABLEC.

Wird benutzt von mutaborGUI::GUIBoxFactory::CreateBoxShape().

898  {
899  if (type < 0) type = 0;
900  if (factories.size() <= type) {
901  factories.resize(type+1,NULL);
902  }
903  if (factories[type]) {
904  UNREACHABLEC;
905  return;
906  }
907  factories[type] = this;
908 
909  }
#define UNREACHABLEC
Definition: mhDefs.h:148
static factorylist factories
Definition: Box.h:774
mutabor::BoxClass::BoxLock::BoxLock ( BoxClass b)
inline

Definiert in Zeile 634 der Datei Box.h.

Benutzt mutASSERT.

634  :ScopedLock(b->mutex),
635  box(b) {
636  mutASSERT(IsOk());
637  }
wxMutexLocker ScopedLock
Definition: thread.h:57
#define mutASSERT
Definition: Defs.h:222
int BuildTag ( )

Definiert in Zeile 538 der Datei GIS.cpp.

Benutzt Clear(), DEBUGLOG2, Tag(), TagMode, TagName und TagSep.

Wird benutzt von BeginSegment(), BeginSequenz(), Comma(), EndRange(), EndSegment(), EndSequenz(), NextSequenz(), Note() und Tag().

539 {
540  DEBUGLOG2(gmnfile,_T("TagName.len %d, '%s'"),(int)TagName.Len(),TagName.c_str());
541  GisTag *Tag = new GisTag(TagName, Para, TagSep);
542  *Current = Tag;
543  Current = &(Tag->Next);
544  Clear(&TagName);
545  Clear(&TagSep);
546  Para = 0;
547  LastPara = 0;
548  TagMode = 0;
549  return 0;
550 }
char TagMode
Definition: GIS.cpp:112
mutString TagSep
Definition: GIS.cpp:116
GisToken * Para
Definition: GIS.cpp:118
void Clear(mutString *s)
Definition: GIS.cpp:501
mutString TagName
Definition: GIS.cpp:114
Definition: GIS.h:293
GisToken * LastPara
Definition: GIS.cpp:118
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
int Tag(const mutString tagName)
Definition: GIS.cpp:735
mutabor::BoxClass::ChangedCallback::ChangedCallback ( Box b)
inline

Definiert in Zeile 140 der Datei Box.h.

140  :box(b) {
141  if (b) b->Register(this);
142  }
mutabor::ChannelData::ChannelData ( int  sound = -1)
inline

Definiert in Zeile 104 der Datei Device.h.

105  :controller(128,-1),
106  controller_changed(256,-1),
107  first_unchanged(0),
108  looped(false),
109  data_is_rpn(true),
110  Sound(sound),
111  bank_coarse(-1),
112  bank_fine(-1),
113  bend(0)
114  {
115  /*
116  controller[midi::HOLD_PEDAL_ON_OFF] = sustain;
117  if (sustain != 0) {
118  controller_changed[first_unchanged]
119  = midi::HOLD_PEDAL_ON_OFF;
120  first_unchanged++;
121  }
122  */
123  }
size_t first_unchanged
Definition: Device.h:462
controller_vector controller
Definition: Device.h:460
uint8_t bank_fine
Definition: Device.h:467
controller_vector controller_changed
Definition: Device.h:461
uint8_t bank_coarse
Definition: Device.h:466
int CharIn ( mutChar  c,
const mutChar s 
)
inline

Definiert in Zeile 112 der Datei GSP.cpp.

Benutzt DEBUGLOG2 und mutStrChr.

Wird benutzt von DoParse(), GetSep() und ReadNote().

114 {
115  DEBUGLOG2(other,_T("'%c' is in '%s' at position %d, returning %d"),
116  c, s, (int)(mutStrChr(s, c)-s), (int)(mutStrChr(s, c) != NULL));
117  return mutStrChr(s, c) != NULL;
118 }
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define mutStrChr
Definition: Defs.h:116
template<class I = InputDevice, class O = OutputDevice, class B = Box>
char mutabor::TRouteClass< I, O, B >::Check ( int  i)
inline

Definiert in Zeile 156 der Datei Route.h.

156  {
157  return (IFrom <= i && i <= ITo);
158  }
void ChordNote::CheckCloseAlter ( )

Definiert in Zeile 873 der Datei GIS_Head.cpp.

Benutzt ChordNote::AddGis(), ChordNote::AlterBegin, CNAlter, ChordNote::LastSep, mutEmptyString, mutString, ChordNote::Pitch, Sep und ChordNote::Status.

Wird benutzt von ChordNote::CheckClose(), ChordNote::CheckCloseTie() und ChordNote::MutNoteOn().

874 {
875  if ( Status & CNAlter ) {
877  mutString *Sep = LastSep;
878 
879  if ( !LastSep ) Sep = &s;
880 
881  AddGis(new GisTagEnd((GisTagBegin*)*AlterBegin, *Sep));
882 
883 #ifdef WX
884  if ( Sep->size() ) {
885  *Sep = wxEmptyString;
886  }
887 
888 #else
889  if ( *Sep.length() ) {
890  free(*Sep);
891  *Sep = 0;
892  }
893 
894 #endif
895  Status -= CNAlter;
896 
897  Pitch = 0;
898  }
899 }
mutString * LastSep
Definition: GIS_Head.h:447
GisToken ** AlterBegin
Definition: GIS_Head.h:444
char Status
Definition: GIS_Head.h:443
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:865
double Pitch
Definition: GIS_Head.h:450
Definition: GIS.h:420
#define CNAlter
Definition: GIS_Head.h:424
#define mutString
Definition: Defs.h:84
mutString Sep
Definition: GSP.cpp:59
#define mutEmptyString
Definition: Defs.h:86
void ChordNote::CheckCloseTie ( )

Definiert in Zeile 901 der Datei GIS_Head.cpp.

Benutzt ChordNote::AddGis(), ChordNote::CheckCloseAlter(), ChordNote::Cursor, ChordNote::LastSep, mutEmptyString, mutString, mutT, ChordNote::nTie, Sep, ChordNote::TieBegin und TTtie.

Wird benutzt von ChordNote::CheckClose().

902 {
903  if ( nTie > 1 ) {
904  // close alter
905  CheckCloseAlter();
906  // insert begin range
907  *TieBegin = new GisTagBegin(TTtie, 0, 0, mutT("("), *TieBegin);
908  // add end range
910  mutString *Sep = LastSep;
911 
912  if ( !LastSep ) Sep = &s;
913 
914  AddGis(new GisTagEnd((GisTagBegin*)*TieBegin, *Sep));
915 
916 #ifdef WX
917  if ( Sep->size() ) {
918  *Sep=mutEmptyString;
919  }
920 
921 #else
922  if ( *Sep ) {
923  free(*Sep);
924  *Sep = 0;
925  }
926 
927 #endif
928  }
929 
930  TieBegin = Cursor;
931 
932  nTie = 0;
933 }
GisToken ** Cursor
Definition: GIS_Head.h:437
void CheckCloseAlter()
Definition: GIS_Head.cpp:873
mutString * LastSep
Definition: GIS_Head.h:447
#define TTtie
Definition: GIS.h:94
GisToken ** TieBegin
Definition: GIS_Head.h:445
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:865
Definition: GIS.h:420
#define mutString
Definition: Defs.h:84
#define mutT
Definition: Defs.h:77
mutString Sep
Definition: GSP.cpp:59
int nTie
Definition: GIS_Head.h:446
#define mutEmptyString
Definition: Defs.h:86
int CheckError ( int  nr)

Definiert in Zeile 186 der Datei GSP.cpp.

Benutzt GspError, GspErrorLine, GspErrorLineNr, GspErrorPos, PossibleErrorLine, PossibleErrorLineNr und PossibleErrorPos.

Wird benutzt von DoParse(), GspParse(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

187 {
188  if ( !nr ) return 0; // no error
189 
190  if ( GspError ) return GspError;
191 
192  GspError = nr;
193 
195 
197 
199 
200  return nr;
201 }
mutString GspErrorLine
Definition: GSP.cpp:50
int GspErrorPos
Definition: GSP.cpp:49
int GspError
Definition: GSP.cpp:51
mutString PossibleErrorLine
Definition: GSP.cpp:56
int PossibleErrorLineNr
Definition: GSP.cpp:54
int PossibleErrorPos
Definition: GSP.cpp:55
int GspErrorLineNr
Definition: GSP.cpp:48
bool OutputMidiFileTest::CheckOut ( mutString  s,
int  line,
const mutChar file 
)

Definiert in Zeile 4525 der Datei DevMidFTest.cpp.

Benutzt _, DEBUGLOG, mutString, OutputMidiFileTest::out und mutabor::OutputMidiFile::Save().

Wird benutzt von OutputMidiFileTest::testBatchPlay1().

4525  {
4526  wxMemoryOutputStream * stream = new wxMemoryOutputStream();
4527  out->Save(*stream);
4528  mutString *tmp = new mutString();
4529  *tmp = StreamToHex(stream->GetOutputStreamBuffer());
4530  delete stream;
4531  bool retval = (*tmp == s);
4532  if (!retval) {
4533  DEBUGLOG(always,_("\n\
4534 %s:%d: Stream check failed.\n\
4535 \n\
4536 Expected:\n\
4537 |-------------------\n\
4538 %s\
4539 |-------------------\n\
4540 \n\
4541 Got:\n\
4542 |-------------------\n\
4543 %s\
4544 |-------------------\n\
4545 \n\
4546 "),
4547  file,line,s.c_str(),tmp->c_str());
4548  }
4549  delete tmp;
4550  return retval;
4551 }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
virtual void Save(tree_storage &config)
Save current device settings in a tree storage.
Definition: DevMidF.cpp:249
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:229
#define _
Definition: Execute.cpp:57
#define mutString
Definition: Defs.h:84
ChordNote::ChordNote ( ChordNote first)

Definiert in Zeile 795 der Datei GIS_Head.cpp.

Benutzt ChordNote::AddGis(), ChordNote::Boss, ChordNote::BossPos, GisWriteHead::ChordPos, ChordNote::CurrentTime, GisWriteHead::Cursor, ChordNote::Cursor, ChordNote::Data, GMN_NO_KEY, ChordNote::InstrId, ChordNote::Key, ChordNote::LastSep, mutEmptyString, mutT, ChordNote::Next, ChordNote::nTie, ChordNote::Pitch, ChordNote::Status, ChordNote::Taste, ChordNote::TieBegin, GisWriteHead::TotalTime und ChordNote::TotalTime.

796 {
797  // copy data from first
798  Boss = first->Boss;
799  BossPos = first->BossPos;
800  Next = 0;
801  Data = 0;
802  Cursor = &Data;
804 
805  if ( TotalTime )
806  AddGis(new GisNote(mutT("_"), mutEmptyString, 0, TotalTime, mutT(" "), 0));
807 
808  CurrentTime = 0;
809 
810  Boss->ChordPos = Boss->Cursor;
811 
812  Status =0;
813 
814  TieBegin = 0;
815 
816  nTie = 0;
817 
818  LastSep = 0;
819 
820  InstrId = -1;
821 
822  Taste = GMN_NO_KEY;
823 
824  Key = GMN_NO_KEY;
825 
826  Pitch = 0;
827 }
GisToken ** Cursor
Definition: GIS_Head.h:437
int Taste
Definition: GIS_Head.h:448
#define GMN_NO_KEY
Definition: GIS.h:105
mutString * LastSep
Definition: GIS_Head.h:447
GisToken ** ChordPos
Definition: GIS_Head.h:324
frac TotalTime
Definition: GIS_Head.h:440
GisWriteHead * Boss
Definition: GIS_Head.h:438
GisToken * Data
Definition: GIS_Head.h:436
char Status
Definition: GIS_Head.h:443
int Key
Definition: GIS_Head.h:449
GisToken ** TieBegin
Definition: GIS_Head.h:445
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:865
int InstrId
Definition: GIS_Head.h:442
frac CurrentTime
Definition: GIS_Head.h:439
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken ** BossPos
Definition: GIS_Head.h:441
double Pitch
Definition: GIS_Head.h:450
ChordNote * Next
Definition: GIS_Head.h:435
frac TotalTime
Definition: GIS_Head.h:321
Definition: GIS.h:457
#define mutT
Definition: Defs.h:77
int nTie
Definition: GIS_Head.h:446
#define mutEmptyString
Definition: Defs.h:86
void Clear ( mutString s)

Definiert in Zeile 501 der Datei GIS.cpp.

Benutzt mutEmptyString.

Wird benutzt von BeginRange(), BuildTag(), MutTextBox::GetKeys(), MutTextBox::GetToneSystem(), MutTextBox::NewText(), mutaborGUI::MutEditFile::OnEditClear() und UnRavel().

502 {
503  *s = mutEmptyString;
504 }
#define mutEmptyString
Definition: Defs.h:86
void mutabor::InputDeviceClass::current_keys_type::clear ( )
inline

Definiert in Zeile 1061 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von mutabor::InputDeviceClass::DoSilenceKeys().

1061  {
1062  map.clear();
1063  }
static void mutabor::BoxClass::ClearBoxList ( )
inlinestatic

Definiert in Zeile 296 der Datei Box.h.

Benutzt mutabor::BoxClass::boxList und mutASSERT.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad(), IMPLEMENT_APP(), compat30::LoadRoutes() und RouteTest::testDestroyAll().

296  {
297  while (!boxList.empty()) {
298 #ifdef DEBUG
299  Box d = boxList.front();
300 #endif
301  boxList.front()->Destroy();
302 #ifdef DEBUG
303  mutASSERT(boxList.empty() ||
304  d != boxList.front());
305 #endif
306  }
307  }
static listtype boxList
Definition: Box.h:643
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
#define mutASSERT
Definition: Defs.h:222
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static void mutabor::CommonTypedDeviceAPI< T, P, L >::ClearDeviceList ( )
inlinestatic

Definiert in Zeile 771 der Datei Device.h.

771  {
772  while (!deviceList.empty()) {
773 #ifdef DEBUG
774  DevicePtr d = deviceList.front();
775 #endif
776  deviceList.front()->Destroy();
777 #ifdef DEBUG
778  mutASSERT(deviceList.empty() ||
779  d != deviceList.front());
780 #endif
781  }
782  }
static listtype deviceList
Definition: Device.h:668
#define mutASSERT
Definition: Defs.h:222
template<class I = InputDevice, class O = OutputDevice, class B = Box>
static void mutabor::TRouteClass< I, O, B >::ClearRouteList ( )
inlinestatic

Definiert in Zeile 439 der Datei Route.h.

439  {
440  TRACET(thistype);
441  Route d;
442  while (!routeList.empty()) {
443  mutASSERT(intrusive_ptr_get_refcount(d.get()) <= 1);
444  TRACET(thistype);
445  d = routeList.front();
446  TRACET(thistype);
447  d->Destroy();
448 
449  mutASSERT(routeList.empty() ||
450  d != routeList.front());
451  }
452  mutASSERT(intrusive_ptr_get_refcount(d.get()) <= 1);
453  TRACET(thistype);
454  }
static routeListType routeList
Definition: Route.h:469
#define TRACET(type)
Definition: mutDebug.h:152
#define mutASSERT
Definition: Defs.h:222
TRouteClass thistype
Definition: Route.h:111
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:117
void mutabor::BoxClass::Close ( )
inline

Definiert in Zeile 343 der Datei Box.h.

Benutzt mutabor::BoxClass::DoClose() und mutabor::BoxClass::open.

Wird benutzt von mutabor::BoxClass::Destroy().

343  {
344  BoxLock lock(this);
345  if (open)
346  DoClose();
347  open = false;
348  }
virtual void DoClose()
Definition: Box.cpp:397
virtual void mutabor::Device::Close ( )
pure virtual
virtual void mutabor::InputDeviceClass::Close ( )
inlinevirtual

Implementiert mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice und myDevice.

Definiert in Zeile 1080 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::Stop().

Wird benutzt von CommonMidiInputTest::testGlobalPanic() und CommonMidiInputTest::testPanic().

1080  {
1081  Stop();
1082  }
virtual void Stop()
Stop playback or recording of the device.
Definition: Device.h:1083
void mutabor::BoxClass::CloseAll ( )
static

Close all boxes.

This function deactivates all boxes.

Definiert in Zeile 453 der Datei Box.cpp.

Wird benutzt von mutabor::OpenAll().

453  {
454  BoxClass_CallClose callclose;
455  std::for_each(boxList.begin(),boxList.end(),callclose);
456  }
static listtype boxList
Definition: Box.h:643
void CloseAllSubs ( GisWriteHead head)

Definiert in Zeile 1512 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::CloseSubs(), GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, GetGisType(), GTSegment, h, mutT, GisWriteHead::Next, GisWriteHead::nSub und GisWriteHead::RemoveComma().

Wird benutzt von mutabor::OutputGis::Close().

1513 {
1514  while ( 1 ) {
1515  // search the lowest boss
1516  GisWriteHead *Boss = 0;
1517 
1518  for (GisWriteHead *H = head; H; H = H->Next)
1519  if ( H->nSub > 0 )
1520  Boss = H;
1521 
1522  if ( !Boss ) break;
1523 
1524  // check for "empty" boss
1525  if ( !Boss->Data && Boss->nSub == 1 ) {
1526  GisWriteHead *h = Boss->Next;
1527  Boss->Data = h->Data;
1528  Boss->nSub = 0;
1529  h->Data = 0;
1530  h->CutOut();
1531  delete h;
1532  continue;
1533  }
1534 
1535  // check for segment
1536  if ( GetGisType(*Boss->Cursor) != GTSegment ) {
1537  if ( Boss->Data && !Boss->CommaAtEnd ) {
1538  *Boss->Cursor = new GisComma(mutT(" "), 0);
1539  Boss->Cursor = &((*Boss->Cursor)->Next);
1540  }
1541 
1542  Boss->Data = new GisSegment(Boss->Data, mutT(" "), 0);
1543 
1544  GisToken **Cont = Boss->Cursor;
1545 
1546  if ( Boss->Cursor == &Boss->Data )
1547  Cont = 0;
1548 
1549  Boss->Cursor = &Boss->Data;
1550 
1551  Boss->CloseSubs(Cont);
1552  } else
1553  Boss->CloseSubs();
1554  }
1555 
1556  /* // check wether there are parallel heads
1557  if ( head->Next ) */
1558  // remove comma at end
1559  head->RemoveComma();
1560 }
GisReadArtHead * h
Definition: mutgis.cpp:5
Definition: GIS.h:119
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:132
GisWriteHead * CutOut()
Definition: GIS_Head.cpp:1023
Definition: GIS.h:639
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320
void RemoveComma()
Definition: GIS_Head.cpp:1131
GisWriteHead * Next
Definition: GIS_Head.h:317
#define mutT
Definition: Defs.h:77
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:833
int CloseSubs(GisToken **cont=0)
Definition: GIS_Head.cpp:1151
int GisWriteHead::CloseCurrentToken ( char  insertRest = 1)

Definiert in Zeile 1185 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::ChordNotes, GisWriteHead::CloseSubs(), GisWriteHead::CurrentTime, GisWriteHead::Cursor, GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, mutT, GisWriteHead::State() und GisWriteHead::WriteChord().

Wird benutzt von GisWriteHead::ProceedGis() und GisWriteHead::ReadyForBoss().

1186 {
1187  if ( ChordNotes ) {
1188  WriteChord();
1189  return 0;
1190  }
1191 
1192  switch ( State() ) {
1193 
1194  case GTNull:
1195  if ( insertRest && CurrentTime ) // write a rest
1196  {
1197  *Cursor = new GisNote(mutT("_"), mutT(""), 0, CurrentTime, mutT(" "));
1198  Cursor = &((*Cursor)->Next);
1199  CurrentTime = 0;
1200  }
1201  break;
1202 
1203  case GTUnknown:
1204  return 1; // impossible
1205 
1206  case GTSequenz:
1207  CloseSubs();
1208 
1209  CurrentTime = 0;
1210 
1211  Cursor = &((*Cursor)->Next);
1212 
1213  break;
1214 
1215  case GTSegment:
1216  CloseSubs();
1217 
1218  CurrentTime = 0;
1219 
1220  Cursor = &((*Cursor)->Next);
1221 
1222  break;
1223 
1224  case GTTag:
1225  return 1; // impossible
1226 
1227  case GTTagBegin:
1228  return 1; // impossible
1229 
1230  case GTTagEnd:
1231  return 1; // impossible
1232 
1233  /* case GTNote:
1234  ((GisNote*)(*Cursor))->Duration = CurrentTime;
1235  Cursor = &(*Cursor)->Next;
1236  CurrentTime = frac(0, 1);
1237  // das hier muß anders sein, um mehrere Noten gleichzeitig zu schaffen
1238  break; */
1239 
1240  case GTParaInt:
1241  return 1; // impossible
1242 
1243  case GTParaReal:
1244  return 1; // impossible
1245 
1246  case GTParaStr:
1247  return 1; // impossible
1248  case GTNote:case GTComma:
1249  ;
1250  }
1251 
1252  return 0;
1253 }
Definition: GIS.h:123
ChordNote * ChordNotes
Definition: GIS_Head.h:325
frac CurrentTime
Definition: GIS_Head.h:321
Definition: GIS.h:119
Definition: GIS.h:120
Definition: GIS.h:116
Definition: GIS.h:122
Definition: GIS.h:127
Definition: GIS.h:117
GisType State()
Definition: GIS_Head.h:371
Definition: GIS.h:124
void WriteChord()
Definition: GIS_Head.cpp:1389
GisToken ** Cursor
Definition: GIS_Head.h:320
Definition: GIS.h:457
#define mutT
Definition: Defs.h:77
Definition: GIS.h:118
Definition: GIS.h:126
int CloseSubs(GisToken **cont=0)
Definition: GIS_Head.cpp:1151
int CloseFile ( )

Definiert in Zeile 75 der Datei GSP_File.cpp.

Benutzt File.

Wird benutzt von GspParse().

76 {
77  delete File;
78  return 0;
79 }
mutTextStream * File
Definition: GSP_File.cpp:45
int GisWriteHead::CloseSubs ( GisToken **  cont = 0)

Definiert in Zeile 1151 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Boss, GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, h, mutT, GisWriteHead::Next, GisWriteHead::nSub, GisWriteHead::ReadyForBoss() und GisWriteHead::RemoveComma().

Wird benutzt von CloseAllSubs() und GisWriteHead::CloseCurrentToken().

1152 {
1153  GisWriteHead *h = Next;
1154  GisToken **Cont = &(((GisSegment*)*Cursor)->Contents);
1155 
1156  if ( cont ) Cont = cont;
1157 
1158  while ( h && nSub > 0 && h->Boss == this ) {
1159  h->ReadyForBoss();
1160 
1161  if ( nSub == 1 && h->CommaAtEnd )
1162  h->RemoveComma();
1163 
1164  *Cont = h->Data;
1165 
1166  if ( Data )
1167  Cont = h->Cursor;
1168 
1169  if ( nSub > 1 && !h->CommaAtEnd ) {
1170  *Cont = new GisComma(mutT(" "), 0);
1171  Cont = &((*Cont)->Next);
1172  }
1173 
1174  nSub--;
1175 
1176  h->CutOut();
1177  delete h;
1178  h = Next;
1179  }
1180 
1181  return nSub;
1182 }
GisReadArtHead * h
Definition: mutgis.cpp:5
int ReadyForBoss()
Definition: GIS_Head.cpp:1083
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:132
GisWriteHead * CutOut()
Definition: GIS_Head.cpp:1023
Definition: GIS.h:639
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320
void RemoveComma()
Definition: GIS_Head.cpp:1131
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * Boss
Definition: GIS_Head.h:318
#define mutT
Definition: Defs.h:77
int CmpNote ( GisToken note1,
GisToken note2 
)

Definiert in Zeile 778 der Datei GIS_Head.cpp.

Benutzt GTNote, NOTE1, NOTE2, StrCmp() und GisToken::Type().

Wird benutzt von ChordNote::SetNoteOff().

779 {
780  if ( note1->Type() != GTNote || note2->Type() != GTNote )
781  return 0;
782 
783  if ( StrCmp(NOTE1->Name, NOTE2->Name)
784  || StrCmp(NOTE1->Accedentials, NOTE2->Accedentials)
785  || NOTE1->Octave != NOTE2->Octave )
786  return 0;
787 
788  return 1;
789 
790 }
Definition: GIS.h:123
#define NOTE2
Definition: GIS_Head.cpp:754
#define NOTE1
Definition: GIS_Head.cpp:753
virtual GisType Type() const
Definition: GIS.h:154
int StrCmp(const mutString &s1, const mutString &s2)
Definition: GIS_Head.cpp:758
int Comma ( )

Definiert in Zeile 795 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2 und TagMode.

Wird benutzt von DoParse() und GisWriteHead::ReadyForBoss().

796 {
797  DEBUGLOG2(gmnfile,_T(","));
798 
799  if ( TagMode ) BuildTag();
800 
801  *Current = new GisComma(Sep, 0);
802 
803  Current = &((*Current)->Next);
804 
805  return 0;
806 }
char TagMode
Definition: GIS.cpp:112
int BuildTag()
Definition: GIS.cpp:538
Definition: GIS.h:639
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ( )
inlineprotected

Definiert in Zeile 670 der Datei Device.h.

670  :Device() {
671  AppendToDeviceList(static_cast<thistype *>(this));
672  }
static void AppendToDeviceList(DevicePtr dev)
Definition: Device.cpp:301
Device(const mutStringRef name=mutEmptyString, int id=-1)
Definition: Device.h:629
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ( const mutStringRef  name,
int  id = -1 
)
inlineprotected

Definiert in Zeile 674 der Datei Device.h.

675  :Device(name, id) {
676  AppendToDeviceList(static_cast<thistype *>(this));
677  }
static void AppendToDeviceList(DevicePtr dev)
Definition: Device.cpp:301
Device(const mutStringRef name=mutEmptyString, int id=-1)
Definition: Device.h:629
bool mutabor::BoxClass::Compile ( CompileCallback callback,
const char *  logic 
)

Definiert in Zeile 659 der Datei Box.cpp.

Benutzt _, mutabor::hidden::mutabor_scanner_data::anzahl_eingelesene_zeichen, mutabor::hidden::expand_decition_tree(), mutabor::hidden::mutabor_box_type::file, mutabor::BoxClass::get_errors(), intervall_list_laenge(), mutabor::hidden::mutabor_logic_parsed::list_of_intervalle, mutabor::hidden::mutabor_logic_parsed::list_of_logiken, mutabor::hidden::mutabor_logic_parsed::list_of_toene, mutabor::hidden::mutabor_logic_parsed::list_of_tonsysteme, mutabor::hidden::mutabor_logic_parsed::list_of_umstimmungen, mutabor::hidden::loesche_syntax_speicher(), mutabor::hidden::logik_list_laenge(), mutabor::hidden::mutabor_programm_einlesen(), mutabor::BoxClass::CompileCallback::Refresh(), mutabor::hidden::mutabor_box_type::scanner, mutabor::BoxClass::CompileCallback::SetMessage(), mutabor::BoxClass::CompileCallback::SetStatus(), mutabor::hidden::ton_list_laenge(), mutabor::hidden::tonsystem_list_laenge(), mutabor::hidden::umstimmungs_list_laenge() und weiter_gehts_nach_compilerfehler.

659  {
660  set_callback callback_holder(this,callback);
661  if (!setjmp(weiter_gehts_nach_compilerfehler)) {
663  // init_yylex ();
664 
666 
667  if (callback) {
668  callback->SetStatus(logik_list_laenge(box->file->list_of_logiken),
674 
675  // show_line_number(-1);
676 
677  callback->SetStatus(_("Generating tables"));
678  callback->Refresh();
679  }
680 
682 
683 
684  if (callback) {
685  callback->SetStatus(_("Translation successful"));
686  callback->SetMessage(_("No error occured."));
687  callback->Refresh();
688  }
689  return true;
690  } else {
691  //show_line_number(-1);
692  if (callback) {
693  callback->SetStatus(_("Translation interrupted."));
694  callback->SetMessage(get_errors());
695  callback->Refresh();
696  }
697 
698  return false;
699  }
700  }
int loesche_syntax_speicher(mutabor_box_type *box)
Definition: Hilfs.cpp:287
int umstimmungs_list_laenge(const struct umstimmung *list)
Definition: Parser.cpp:101
int logik_list_laenge(const struct logik *list)
Definition: Parser.cpp:111
void expand_decition_tree(mutabor_box_type *box)
Definition: TabGen.cpp:1304
struct tonsystem * list_of_tonsysteme
Definition: Parser.h:104
struct mutabor_box_type * box
Definition: Box.h:648
struct intervall * list_of_intervalle
Definition: Parser.h:102
jmp_buf weiter_gehts_nach_compilerfehler
Definition: gmut.cpp:28
#define _
Definition: Execute.cpp:57
struct mutabor_logic_parsed * file
Definition: box.h:180
struct mutabor_scanner_data * scanner
Definition: box.h:179
int tonsystem_list_laenge(const struct tonsystem *list)
Definition: Parser.cpp:91
bool mutabor_programm_einlesen(mutabor_box_type *box, const char *logic)
Definition: Parser.cpp:614
int intervall_list_laenge(struct intervall *list)
Definition: Interval.cpp:141
struct umstimmung * list_of_umstimmungen
Definition: Parser.h:105
virtual const mutStringRef get_errors()
Return the collected errors and warnings.
Definition: Box.h:624
int ton_list_laenge(const struct ton *list)
Definition: Parser.cpp:80
void mutabor::BoxClass::compile_callback ( struct mutabor_box_type b,
int  line_number 
)
static

Definiert in Zeile 849 der Datei Box.cpp.

Benutzt mutabor::BoxClass::current_compile_callback und mutabor::BoxClass::CompileCallback::SetLine().

849  {
850  BoxClass * box =
851  reinterpret_cast<BoxClass *>(b -> userdata);
852  if (box->current_compile_callback) {
853  box->current_compile_callback->SetLine(line_number);
854  }
855  }
struct mutabor_box_type * box
Definition: Box.h:648
BoxClass(int id=-1)
Definition: Box.cpp:777
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Controller ( int  controller,
int  value,
size_t  make_unique 
)
inline

Definiert in Zeile 261 der Datei Route.h.

263  {
264  if (Out)
265  Out->Controller(session_id,
266  controller,
267  value,
268  make_unique);
269  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:470
OutputDevice Out
Definition: Route.h:460
void mutabor::OutputDeviceClass::Controller ( int  mutabor_channel,
int  controller,
int  value,
size_t  id 
)
inline

Definiert in Zeile 844 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Controller() und mutabor::OutputDeviceClass::write_lock.

847  {
848  ScopedLock lock(write_lock);
849  do_Controller(mutabor_channel,
850  controller,
851  value,
852  id);
853  }
virtual void do_Controller(int mutabor_channel, int controller, int value, size_t id)=0
wxMutexLocker ScopedLock
Definition: thread.h:57
TagList * Copy ( TagList list)

Definiert in Zeile 445 der Datei GIS_Head.cpp.

Benutzt TagListData::Data, TagListData::Next und TagListData::Tag.

Wird benutzt von GisReadArtHead::GisReadArtHead() und mutaborGUI::MutEditFile::OnEditCopy().

446 {
447  if ( !list ) return 0;
448 
449  TagList *List = new TagList;
450 
451  List->Next = 0;
452 
453  List->Tag = list->Tag;
454 
455  List->Data = list->Data;
456 
457  return List;
458 }
struct TagListData * Next
Definition: GIS_Head.h:148
GisTag * Tag
Definition: GIS_Head.h:149
struct TagListData TagList
union TagListData::data Data
GisToken * CopyPara ( GisToken para)

Definiert in Zeile 876 der Datei GIS.cpp.

Benutzt GisToken::Copy() und GisToken::Next.

Wird benutzt von GisTag::Copy() und GisTagBegin::Copy().

878 {
879  GisToken *C = 0;
880  GisToken **Cursor = &C;
881 
882  while ( para ) {
883  *Cursor = para->Copy();
884  Cursor = &(*Cursor)->Next;
885  para = para->Next;
886  }
887 
888  return C;
889 }
virtual GisToken * Copy()
Definition: GIS.h:159
Definition: GIS.h:132
GisToken * Next
Definition: GIS.h:136
void ChordNote::CountOnTime ( frac  dTime)

Definiert in Zeile 829 der Datei GIS_Head.cpp.

Benutzt ChordNote::CountOnTime(), ChordNote::CurrentTime, ChordNote::Next und ChordNote::TotalTime.

Wird benutzt von GisWriteHead::AddTime() und ChordNote::CountOnTime().

831 {
832  CurrentTime += dTime;
833  TotalTime += dTime;
834 
835  if ( Next ) Next->CountOnTime(dTime);
836 }
void CountOnTime(frac dTime)
Definition: GIS_Head.cpp:829
frac TotalTime
Definition: GIS_Head.h:440
frac CurrentTime
Definition: GIS_Head.h:439
ChordNote * Next
Definition: GIS_Head.h:435
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Create ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box  box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlineprotected

Definiert in Zeile 188 der Datei Route-inlines.h.

Benutzt mutabor::connect(), DEBUGLOG und intrusive_ptr_get_refcount().

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::TRouteClass().

198  {
199  DEBUGLOG(smartptr,_T("Route %p (%d)"),
200  (void*)this,
201  (int)intrusive_ptr_get_refcount(this));
202  DEBUGLOG(smartptr,_T("input device %p (%d)"),
203  (void*)in.get(),
204  (int)intrusive_ptr_get_refcount(in.get()));
205  DEBUGLOG(smartptr,_T("output device %p (%d)"),
206  (void*)out.get(),
207  (int)intrusive_ptr_get_refcount(out.get()));
208  Route self(this);
209  if (in)
210  connect(self,in);
211  else
212  In.reset();
213  if (out)
214  connect(self,out);
215  else
216  Out.reset();
217  Type = type;
218  IFrom = iFrom;
219  ITo = iTo;
220  this->box = box;
221  Active = active;
222  OFrom = oFrom;
223  OTo = oTo;
224  ONoDrum = oNoDrum;
225  }
InputDevice In
Definition: Route.h:461
RouteType Type
Definition: Route.h:477
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
OutputDevice Out
Definition: Route.h:460
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:117
static Route mutabor::RouteFactory::Create ( )
inlinestatic

Creates a generic route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will not be preconfigured.

Rückgabe
Route smart pointer to the newly created route

Definiert in Zeile 592 der Datei Route.h.

Benutzt mutabor::RouteFactory::DoCreate() und mutabor::RouteFactory::factory.

Wird benutzt von mutaborGUI::MutBoxShape::AddChannel(), compat30::LoadRoutes(), mutabor::TRouteClass< I, O, B >::LoadRoutes(), CommonMidiOutputTest::setUp(), CommonMidiInputTest::setUp(), OutputMidiFileTest::setUp(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testBug019010_2(), GUIRouteTest::testConnect(), InputMidiFileTest::testControllerPlay() und RouteTest::testDestroyAll().

592  {
593  if (factory)
594  return factory->DoCreate();
595  else
596  boost::throw_exception(RouteFactoryNotSet());
597  return NULL;
598  }
virtual RouteClass * DoCreate() const __attribute__((malloc))
Creates a generic route.
Definition: Route.cpp:536
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:740
Route mutabor::RouteFactory::Create ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box  box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlinestatic

Creates a preconfigured route according to the given type.

This functions creates a route object on the heap and returns a smart pointer to it. This route will be preconfigured according the data provided in the arguments.

Parameter
inInputDevice& Reference to a smart pointer for the input device where the route starts.
outOutputDevice& End point of the route.
typeRouteType Type of the input filter. See RouteType for more information.
iFromstart of the range for the input filter. Its meaning depends on the input filter type.
iToend of the range for the input filter. Its meaning depends on the input filter type.
boxbox to be used. Values less than 0 indicate a pass through route or a GMN box.
activeindicates whether the events on the route may change the tuning of the box. Regardless of this setting the box referenced by the box parameter will influence the tuning of the events in this route.
oFromStart of the range of the output filter (will be interpreted by the output device.
oToEnd of the reange of the output fileter (will be interpreted by the output device
oNoDrumOn MIDI like devices avoid the channel usually used for percussion.
Rückgabe
Route created by this function (smart pointer).

Definiert in Zeile 239 der Datei Route-inlines.h.

Benutzt DEBUGLOGTYPE, mutabor::RouteFactory::DoCreate(), mutabor::RouteFactory::factory und intrusive_ptr_get_refcount().

248  {
249 
250  DEBUGLOGTYPE(smartptr,RouteFactory,_T("input device %p (%d)"),
251  (void *)in.get(),
252  (int)intrusive_ptr_get_refcount(in.get()));
253 
254  DEBUGLOGTYPE(smartptr,RouteFactory,_T("output device %p (%d)"),
255  (void *)out.get(),
256  (int)intrusive_ptr_get_refcount(out.get()));
257 
258  if (factory) {
259  RouteClass * r = factory->DoCreate(in,
260  out,
261  type,
262  iFrom,
263  iTo,
264  box,
265  active,
266  oFrom,
267  oTo,
268  oNoDrum);
269  DEBUGLOGTYPE(smartptr,
270  RouteFactory,
271  _T("Shipping %p from factory"),
272  (void *)r);
273 
274  return r;
275  } else {
276 
277  boost::throw_exception( RouteFactoryNotSet());
278 
279 // UNREACHABLECT(RouteFactory);
280  return NULL;
281  }
282 
283  }
#define DEBUGLOGTYPE(level, type,...)
Definition: mutDebug.h:148
virtual RouteClass * DoCreate() const __attribute__((malloc))
Creates a generic route.
Definition: Route.cpp:536
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:543
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:740
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
RouteFactory()
Creates a route Factory.
Definition: Route.cpp:523
static Box mutabor::BoxFactory::Create ( int  type,
int  id = NewBox 
)
inlinestatic

Definiert in Zeile 731 der Datei Box.h.

Benutzt mutabor::Box0, mutabor::BoxFactory::factories, mutASSERT, mutabor::NewBox und UNREACHABLECT.

Wird benutzt von mutaborGUI::MutBoxShape::DoLeftDblClick(), mutabor::BoxClass::GetOrCreateBox(), mutabor::BoxFactory::LoadBoxes(), CommonMidiOutputTest::setUp(), CommonMidiInputTest::setUp(), OutputMidiFileTest::setUp(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testBug019010_2(), GUIRouteTest::testConnect(), InputMidiFileTest::testControllerPlay(), BoxTest::testCopyPLay(), RouteTest::testDestroyAll(), BoxTest::testGetNextFreeBox() und BoxTest::testParser().

731  {
732  if (id == NewBox && type != Box0) {
733  id = type;
734  }
735 
736  if (type < 0) type = 0;
737  mutASSERT(type >= 0);
738  if (factories.size() <=(size_t) type) {
739  boost::throw_exception(FactoryNotFound(type));
741  return NULL;
742  }
743  if (!factories[type])
744  boost::throw_exception(FactoryNotFound(type));
745  return factories[type]->DoCreateBox(id);
746  }
BoxFactory(size_t id=0)
Definition: Box.cpp:898
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
#define mutASSERT
Definition: Defs.h:222
static factorylist factories
Definition: Box.h:774
template<class T >
static T mutabor::DeviceFactory::Create ( int  type,
const mutStringRef  name = mutEmptyString,
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
static
template<>
InputDevice mutabor::DeviceFactory::Create ( int  type,
const mutStringRef  name,
MutaborModeType  mode,
int  id 
)
inline

Definiert in Zeile 1387 der Datei Device.h.

1390  {
1391  return CreateInput(type,name,mode,id);
1392  }
static InputDevice CreateInput(int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1296
static InputDevice mutabor::DeviceFactory::CreateInput ( int  type,
const mutStringRef  name = mutEmptyString,
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
inlinestatic

Definiert in Zeile 1296 der Datei Device.h.

Benutzt mutabor::DeviceFactory::factories, mutASSERT und UNREACHABLECT.

Wird benutzt von mutabor::DeviceFactory::LoadInputDevices(), compat30::LoadRoutes(), InputMidiFileTest::setUp(), OutputMidiFileTest::testBatchPlay1(), GUIRouteTest::testConnect() und RouteTest::testDestroyAll().

1299  {
1300  mutASSERT(type >= 0);
1301  if (factories.size() <= (size_t)type) {
1302  boost::throw_exception(FactoryNotFound(type));
1304  return NULL;
1305  }
1306  if (!factories[type])
1307  boost::throw_exception(FactoryNotFound(type));
1308  return factories[type]->DoCreateInput(name, mode, id);
1309  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:528
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
#define mutASSERT
Definition: Defs.h:222
static factorylist factories
Definition: Device.h:1352
static OutputDevice mutabor::DeviceFactory::CreateOutput ( int  type,
const mutStringRef  name = mutEmptyString,
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
inlinestatic

Definiert in Zeile 1279 der Datei Device.h.

Benutzt mutabor::DeviceFactory::factories, mutASSERT und UNREACHABLECT.

Wird benutzt von mutabor::DeviceFactory::LoadOutputDevices(), compat30::LoadRoutes(), OutputMidiFileTest::setUp(), GUIRouteTest::testConnect() und RouteTest::testDestroyAll().

1282  {
1283  /* \todo implement output device record/pause */
1284  mutASSERT(type >= 0);
1285  if (factories.size() <=(size_t) type) {
1286  boost::throw_exception(FactoryNotFound(type));
1288  return NULL;
1289  }
1290  if (!factories[type])
1291  boost::throw_exception(FactoryNotFound(type));
1292  return factories[type]->DoCreateOutput(name,id);
1293  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:528
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
#define mutASSERT
Definition: Defs.h:222
static factorylist factories
Definition: Device.h:1352
void GisReadHead::CreateSegmentSubs ( )

Definiert in Zeile 265 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Build(), GisSegment::Contents, GisReadHead::Cursor, DEBUGLOG, GTComma, GisReadHead::Id, mutLen, mutString, mutT, GisToken::Next, GisReadHead::nSub und GisToken::Type().

Wird benutzt von GisReadHead::Read() und GisReadArtHead::Read().

266 {
267  GisSegment *Seg = (GisSegment*)Cursor;
268  GisToken *Cont = Seg->Contents;
269 #ifdef WX
270  mutString id = Id + mutT("*");
271 #else
272  char *id = (char*)malloc(strlen(Id)+2);
273  strcpy(id, Id);
274  strcat(id, "*");
275 #endif
276  nSub = 0;
277 
278  while ( Cont ) // create the single token subs
279  {
280  nSub++;
281  id[mutLen(Id)] = nSub;
282  DEBUGLOG (gmnfile, _T("Creating Sub for %p (%d, %s)"), (void*)Cont,nSub,id.c_str());
283 
284 // GisReadHead *Sub = // unused variable
285  Build(this, Cont, id, 1);
286  Cont = Cont->Next;
287 
288  while ( Cont ) // read until end or comma
289  {
290 
291  if ( Cont->Type() == GTComma )
292  {
293  Cont = Cont->Next;
294  break;
295  }
296 
297  Cont = Cont->Next;
298  }
299  }
300 }
GisToken * Cursor
Definition: GIS_Head.h:70
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
Definition: GIS.h:132
virtual GisReadHead * Build(GisReadHead *boss, GisToken *cursor, const mutString &id, bool singleToken=false)
Definition: GIS_Head.h:98
GisToken * Next
Definition: GIS.h:136
#define mutLen(x)
Definition: Defs.h:97
GisToken * Contents
Definition: GIS.h:249
Definition: GIS.h:127
int nSub
Definition: GIS_Head.h:69
virtual GisType Type() const
Definition: GIS.h:154
mutString Id
Definition: GIS_Head.h:72
#define mutString
Definition: Defs.h:84
#define mutT
Definition: Defs.h:77
void GisReadHead::CreateSequenzSubs ( )

Definiert in Zeile 303 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Build(), GisSegment::Contents, GisReadHead::Cursor, GisReadHead::Id, mutString, mutT und GisReadHead::nSub.

Wird benutzt von GisReadHead::Read() und GisReadArtHead::Read().

304 {
305  GisSegment *Seq = (GisSegment*)Cursor;
306 #ifdef WX
307  mutString id = Id + mutT("\x01");
308 #else
309  char *id = (char*)malloc(strlen(Id)+2);
310  strcpy(id, Id);
311  strcat(id, "\x01");
312 #endif
313  nSub = 1;
314 // GisReadHead *Sub = // unused varible;
315  Build(this, Seq->Contents, id);
316 }
GisToken * Cursor
Definition: GIS_Head.h:70
virtual GisReadHead * Build(GisReadHead *boss, GisToken *cursor, const mutString &id, bool singleToken=false)
Definition: GIS_Head.h:98
GisToken * Contents
Definition: GIS.h:249
int nSub
Definition: GIS_Head.h:69
mutString Id
Definition: GIS_Head.h:72
#define mutString
Definition: Defs.h:84
#define mutT
Definition: Defs.h:77
mutabor::BoxClass::current_tone_entry::current_tone_entry ( )
inline

Definiert in Zeile 421 der Datei Box.h.

mutabor::BoxClass::current_tone_entry::current_tone_entry ( int  ind,
double  p,
size_t  i,
int  c 
)
inline

Definiert in Zeile 422 der Datei Box.h.

GisReadHead * GisReadHead::CutOut ( )

Definiert in Zeile 216 der Datei GIS_Head.cpp.

Benutzt mutASSERT, GisReadHead::Next, GisReadHead::Prev und GisReadHead::PrevPtr.

Wird benutzt von GisReadArtHeadOn(), GisReadHeadOn() und mutabor::InputGis::ReadOn().

217 {
218 #if 0
219 
220  if ( *(PrevPtr) == this ) // first of list
221  {
222  *PrevPtr = Next;
223  } else // normal list postition
224  {
225  (*PrevPtr)->Next = Next;
226  }
227 
228  if ( Next ) Next->PrevPtr = PrevPtr;
229 
230  Next = NULL;
231 
232  PrevPtr = &Prev;
233 
234  return this;
235 
236 #else
237  if ( *(PrevPtr) == this ) // first of list
238  {
239  *PrevPtr = Next;
240 
241  if (Next) {
242  Next->PrevPtr = PrevPtr;
243  Next->Prev = NULL;
244  }
245  }
246  else // normal list postition
247  {
248  Prev->Next = Next;
249 
250  if (Next) {
251  Next->Prev = Prev;
252  mutASSERT(Next->PrevPtr == &(Next->Prev));
253  }
254  }
255 
256  Next = NULL;
257 
258  PrevPtr = &Prev;
259  Prev = NULL;
260  return this;
261 #endif
262 }
GisReadHead ** PrevPtr
Definition: GIS_Head.h:67
GisReadHead * Next
Definition: GIS_Head.h:67
GisReadHead * Prev
Definition: GIS_Head.h:67
#define mutASSERT
Definition: Defs.h:222
GisWriteHead * GisWriteHead::CutOut ( )

Definiert in Zeile 1023 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().

1024 {
1025  if ( *(GisWriteHead**)Prev == this ) // first of list
1026  {
1027  *(GisWriteHead**)Prev = Next;
1028  } else // normal list postition
1029  {
1030  Prev->Next = Next;
1031  }
1032 
1033  if ( Next ) Next->Prev = Prev;
1034 
1035  Next = 0;
1036 
1037  Prev = 0;
1038 
1039  return this;
1040 }
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * Prev
Definition: GIS_Head.h:317
void mutabor::BoxClass::DeleteNote ( int  note,
size_t  id,
int  channel 
)
inline

Definiert in Zeile 487 der Datei Box.h.

Benutzt mutabor::BoxClass::box und mutabor::hidden::DeleteKey().

487  {
488  BoxLock lock(this);
489  hidden::DeleteKey(box, note, id, channel);
490  }
void DeleteKey(mutabor_box_type *box, int taste, size_t id, size_t channel)
Definition: Execute.cpp:932
struct mutabor_box_type * box
Definition: Box.h:648
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Destroy ( )
inlinevirtual

Remove from Route list to be deleted, when it becomes free.

As we are using smart pointers the Route gets deleted, when no pointers point to it any more. As we want to interactively manage routes, We must allow routes to have no input device attached to it. This function explicitely allows to delete the object when it is not used any more.

Definiert in Zeile 228 der Datei Route-inlines.h.

Benutzt debug_destroy_class() und mutabor::disconnect().

229  {
230  Route self(this);
231  debug_destroy_class(this);
232  RemoveFromRouteList(this);
233  if (In) disconnect(self,In);
234  if (Out) disconnect(self,Out);
235  if (box) disconnect(self,box);
236  }
InputDevice In
Definition: Route.h:461
static void RemoveFromRouteList(Route route)
Definition: Route.cpp:296
OutputDevice Out
Definition: Route.h:460
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:117
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:77
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: mutDebug.cpp:125
void mutabor::BoxClass::Destroy ( )
inlinevirtual

Destroy the current object.

This function is called when an object shall be deleted. It clears up all references to itself so that it will be deleted if it is not needed anymore.

This functions detatches the device from all routes and calls DoDestroy() afterwards. Finally the Device is going to removed from the device list.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 54 der Datei Box-inlines.h.

Benutzt mutabor::BoxClass::Close(), debug_destroy_class(), mutabor::BoxClass::DisconnectFromAll(), mutabor::BoxClass::IsOpen(), mutabor::BoxClass::RemoveFromBoxList() und TRACEC.

Wird benutzt von mutaborGUI::BoxData::Destroy().

54  {
55  TRACEC;
56  Box self(this);
57  TRACEC;
58  if (IsOpen()) Close();
59 
61 
62  TRACEC;
63  debug_destroy_class(this);
64  RemoveFromBoxList(this);
65  TRACEC;
66  }
bool IsOpen()
Definition: Box.h:352
#define TRACEC
Definition: mutDebug.h:151
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
void Close()
Definition: Box.h:343
static void RemoveFromBoxList(Box dev)
Definition: Box.cpp:296
virtual void DisconnectFromAll()
Disconnect the device from all pairings with routes GUI data or something else.
Definition: Box-inlines.h:68
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: mutDebug.cpp:125
static void mutabor::RouteFactory::Destroy ( )
inlinestatic

Destroy the route factory.

Call this function instead of deleting the factory.

Definiert in Zeile 641 der Datei Route.h.

Benutzt mutabor::RouteFactory::factory.

641  {
642  if (factory)
643  delete factory;
644  else
645  boost::throw_exception( RouteFactoryNotSet());
646 // UNREACHABLECT(RouteFactory);
647  }
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:740
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy ( )
inlinevirtual

Destroy the current object.

This function is called when an object shall be deleted. It clears up all references to itself so that it will be deleted if it is not needed anymore.

This functions detatches the device from all routes and calls DoDestroy() afterwards. Finally the Device is going to removed from the device list.

Definiert in Zeile 53 der Datei Device-inlines.h.

Benutzt debug_destroy_class(), mutaborGUI::IsOpen() und TRACEC.

Wird benutzt von CommonMidiInputTest::tearDown().

53  {
54  TRACEC;
55  DevicePtr self(static_cast<thistype *>(this));
56  TRACEC;
57  if (IsOpen()) Close();
58 
60 
61  TRACEC;
62  debug_destroy_class(this);
63  RemoveFromDeviceList(static_cast<thistype *>(this));
64  TRACEC;
65  }
bool IsOpen() const
Definition: Device.h:607
#define TRACEC
Definition: mutDebug.h:151
virtual void DisconnectFromAll()
Disconnect the device from all pairings with routes GUI data or something else.
static void RemoveFromDeviceList(DevicePtr dev)
Definition: Device.cpp:314
virtual void Close()=0
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: mutDebug.cpp:125
static void mutabor::BoxFactory::Destroy ( )
inlinestatic

Definiert in Zeile 748 der Datei Box.h.

Benutzt mutabor::BoxFactory::factories und UNREACHABLECT.

748  {
749  if (!factories.empty()) {
750  for (factorylist::iterator i = factories.begin();
751  i != factories.end(); i++) {
752  BoxFactory * factory = *i;
753  if (factory)
754  delete factory;
755  }
756  factories.clear();
757  } else
759  }
BoxFactory(size_t id=0)
Definition: Box.cpp:898
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
static factorylist factories
Definition: Box.h:774
static void mutabor::DeviceFactory::Destroy ( )
inlinestatic

Definiert in Zeile 1316 der Datei Device.h.

Benutzt mutabor::DeviceFactory::factories und UNREACHABLECT.

1316  {
1317  if (!factories.empty()) {
1318  for (factorylist::iterator i = factories.begin();
1319  i != factories.end(); ++i) {
1320  DeviceFactory * factory = *i;
1321  if (factory)
1322  delete factory;
1323  }
1324  factories.clear();
1325  } else
1327  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:528
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
static factorylist factories
Definition: Device.h:1352
mutabor::Device::Device ( const mutStringRef  name = mutEmptyString,
int  id = -1 
)
inlineprotected

Definiert in Zeile 629 der Datei Device.h.

630  :session_id(),
631  routefile_id(id),
632  Name(name),
633  dirty(false),
634  isOpen(false),
636  routes(),
637  userdata(NULL)
638  {}
enum MutaborModeType Mode
Definition: Device.h:626
routeListType routes
Definition: Device.h:627
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:621
void * userdata
Definition: Device.h:650
mutString Name
Definition: Device.h:623
int routefile_id
Definition: Device.h:622
mutabor::DeviceFactory::DeviceFactory ( size_t  id = 0)

Definiert in Zeile 528 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::factories und UNREACHABLEC.

Wird benutzt von mutaborGUI::GUIDeviceFactory::CreateShape().

528  {
529  if (factories.size() <= type) {
530  factories.resize(type+1,NULL);
531  }
532  if (factories[type]) {
533  UNREACHABLEC;
534  return;
535  }
536  factories[type] = this;
537 
538  }
#define UNREACHABLEC
Definition: mhDefs.h:148
static factorylist factories
Definition: Device.h:1352
void mutabor::Device::Dirty ( bool  d = true)
inline

Definiert in Zeile 606 der Datei Device.h.

Benutzt mutabor::Device::dirty.

606 { dirty = d; }
void mutabor::BoxClass::DisconnectFromAll ( )
inlinevirtual

Disconnect the device from all pairings with routes GUI data or something else.

This function should be extended in subclasses so that after calling it only temporary pointers (variables in functions or temporary objects) point to the object.

Definiert in Zeile 68 der Datei Box-inlines.h.

Benutzt mutabor::disconnect(), mutabor::BoxClass::routes und TRACEC.

Wird benutzt von mutabor::BoxClass::Destroy().

68  {
69  Route route (NULL);
70  Box self(this);
71 
72  routeListType::iterator R;
73  while ( (R = routes.begin()) != routes.end() ) {
74  TRACEC;
75  route = (*R);
76  TRACEC;
77  disconnect(route,self);
78  TRACEC;
79  }
80  route.reset();
81  }
#define TRACEC
Definition: mutDebug.h:151
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:542
routeListType routes
Definition: Box.h:651
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:77
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::DisconnectFromAll ( )
inlinevirtual

Disconnect the device from all pairings with routes GUI data or something else.

This function should be extended in subclasses so that after calling it only temporary pointers (variables in functions or temporary objects) point to the object.

Definiert in Zeile 68 der Datei Device-inlines.h.

Benutzt mutabor::disconnect() und TRACEC.

68  {
69  Route route (NULL);
70  DevicePtr self(static_cast<thistype *>(this));
71 
72  routeListType::iterator R;
73  while ( (R = routes.begin()) != routes.end() ) {
74  TRACEC;
75  route = (*R);
76  TRACEC;
77  disconnect(route,self);
78  TRACEC;
79  }
80  }
routeListType routes
Definition: Device.h:627
#define TRACEC
Definition: mutDebug.h:151
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:542
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:77
virtual void mutabor::OutputDeviceClass::do_AddTime ( frac  time)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_Controller ( int  mutabor_channel,
int  controller,
int  value,
size_t  id 
)
protectedpure virtual
virtual int mutabor::OutputDeviceClass::do_GetChannel ( int  inkey,
size_t  channel,
size_t  id 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_Gis ( GisToken token,
char  turn 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_MidiOut ( mutabor::Box  box,
midi_string  data 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_MidiOut ( BYTE p,
size_t  n 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_NoteOff ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
bool  is_note_on 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_NoteOn ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
const ChannelData input_channel_data 
)
protectedpure virtual

Really Send the beginning of a sounding note.

Parameter
boxMutabor box that contains the tuning information
tasteinput key from file or keyboard
velokey press velocity
rroute that has been used to transmit the note
idan additional number that is used to make the note unique
input_channel_datacurrent device settings (Controllers, Sound, etc.)
Siehe auch
OutputDeviceClass::NoteOn, OutputDeviceClass::NoteOff

Implementiert in mutabor::CommonMidiOutput< MidiFileOutputProvider, CommonFileOutputDevice >, mutabor::CommonMidiOutput< mutabor::DebugMidiOutputProvider, mutabor::OutputDeviceClass > und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >.

Wird benutzt von mutabor::OutputDeviceClass::NoteOn().

virtual bool mutabor::OutputDeviceClass::do_Open ( )
inlineprotectedvirtual
virtual void mutabor::OutputDeviceClass::do_Panic ( int  type)
inlineprotectedvirtual

Erneute Implementation in mutabor::CommonMidiOutput< MidiFileOutputProvider, CommonFileOutputDevice >, mutabor::CommonMidiOutput< mutabor::DebugMidiOutputProvider, mutabor::OutputDeviceClass > und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >.

Definiert in Zeile 960 der Datei Device.h.

Benutzt STUBC.

Wird benutzt von mutabor::OutputDeviceClass::Panic().

960 { STUBC; };
#define STUBC
functions or code that has to be written – use for normal class members
Definition: mhDefs.h:144
virtual void mutabor::OutputDeviceClass::do_Quiet ( Route  r,
int  type 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_Quiet ( Route  r,
int  type,
size_t  id 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_UpdateTones ( RouteClass route)
protectedpure virtual
void mutabor::BoxClass::DoClose ( )
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 397 der Datei Box.cpp.

Wird benutzt von mutabor::BoxClass::Close().

397  {
398  Reset();
399  }
virtual void Reset()
Definition: Box.cpp:383
RouteClass * mutabor::RouteFactory::DoCreate ( ) const
protectedvirtual

Creates a generic route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will not be preconfigured.

Each RouteFactory class must override this function to return a route of its type.

Rückgabe
Route smart pointer to the newly created route

Erneute Implementation in mutaborGUI::GUIRouteFactory.

Definiert in Zeile 536 der Datei Route.cpp.

Wird benutzt von mutabor::RouteFactory::Create().

537  {
538  return new RouteClass ();
539  }
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:543
RouteClass * mutabor::RouteFactory::DoCreate ( InputDevice in,
OutputDevice out,
RouteType  type,
int  iFrom,
int  iTo,
Box  box,
bool  active,
int  oFrom,
int  oTo,
bool  oNoDrum 
) const
protectedvirtual

Creates a preconfigured route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will be preconfigured according the data provided in the arguments.

Each RouteFactory class must override this function to return a route of its type.

Parameter
inInputDevice& Reference to a smart pointer for the input device where the route starts.
outOutputDevice& End point of the route.
typeRouteType Type of the input filter. See RouteType for more information.
iFromstart of the range for the input filter. Its meaning depends on the input filter type.
iToend of the range for the input filter. Its meaning depends on the input filter type.
boxbox to be used. Values less than 0 indicate a pass through route or a GMN box.
activeindicates whether the events on the route may change the tuning of the box. Regardless of this setting the box referenced by the box parameter will influence the tuning of the events in this route.
oFromStart of the range of the output filter (will be interpreted by the output device.
oToEnd of the reange of the output fileter (will be interpreted by the output device
oNoDrumOn MIDI like devices avoid the channel usually used for percussion.
Rückgabe
Route created by this function (smart pointer).

Definiert in Zeile 541 der Datei Route.cpp.

551  {
552  return new RouteClass (in,out,type,
553  iFrom,iTo,
554  box,active,
555  oFrom,oTo,
556  oNoDrum);
557  }
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:543
BoxClass * mutabor::BoxFactory::DoCreateBox ( int  id = -1) const
protectedvirtual

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 959 der Datei Box.cpp.

959  {
960  BoxClass * box = new BoxClass(id);
961  if (!box) boost::throw_exception(BoxNotCreated());
962  return box;
963  }
virtual InputDeviceClass* mutabor::DeviceFactory::DoCreateInput ( const mutStringRef  name,
MutaborModeType  mode,
int  id = -1 
) const
protectedpure virtual
virtual OutputDeviceClass* mutabor::DeviceFactory::DoCreateOutput ( const mutStringRef  name,
int  id = -1 
) const
protectedpure virtual
int DoError ( int  nr,
int  pos = -1 
)

Definiert in Zeile 167 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, GspCurrentLineNr, GspError, GspErrorLine, GspErrorLineNr und GspErrorPos.

Wird benutzt von DoParse(), GetSep(), GspParse() und ReadNote().

168 {
169  if ( GspError ) return GspError;
170 
171  GspError = nr;
172 
174 
175  if ( pos == -1 )
177  else
178  GspErrorPos = pos;
179 
181 
182  return nr;
183 }
mutString GspErrorLine
Definition: GSP.cpp:50
int GspErrorPos
Definition: GSP.cpp:49
int GspError
Definition: GSP.cpp:51
mutString CurrentLine
Definition: GSP_File.cpp:38
size_t CurrentPos
Definition: GSP_File.cpp:42
int GspCurrentLineNr
Definition: GSP.cpp:47
int GspErrorLineNr
Definition: GSP.cpp:48
void mutabor::BoxFactory::DoLoadBoxes ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 965 der Datei Box.cpp.

Benutzt STUBC.

966  {
967  STUBC;
968  }
#define STUBC
functions or code that has to be written – use for normal class members
Definition: mhDefs.h:144
void mutabor::DeviceFactory::DoLoadInputDevices ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 662 der Datei Device.cpp.

Benutzt STUBC.

663  {
664  STUBC;
665  }
#define STUBC
functions or code that has to be written – use for normal class members
Definition: mhDefs.h:144
void mutabor::DeviceFactory::DoLoadOutputDevices ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 652 der Datei Device.cpp.

Benutzt STUBC.

653  {
654  STUBC;
655  }
#define STUBC
functions or code that has to be written – use for normal class members
Definition: mhDefs.h:144
void mutabor::RouteFactory::DoLoadRoutes ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 559 der Datei Route.cpp.

Benutzt mutabor::tree_storage::GetPath(), mutabor::BoxFactory::LoadBoxes(), mutabor::DeviceFactory::LoadInputDevices(), mutabor::DeviceFactory::LoadOutputDevices(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::LoadRoutes(), mutASSERT, mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::LoadRoutes().

560  {
561 #ifdef DEBUG
562  wxString oldpath = config.GetPath();
563 #endif
564  config.toLeaf(_T("Routing"));
565 
566  BoxFactory::LoadBoxes(config);
569  RouteClass::LoadRoutes(config);
570 
571  config.toParent();
572  mutASSERT(oldpath == config.GetPath());
573  }
static void LoadBoxes(tree_storage &config)
load the routes from a tree based configuration
Definition: Box.cpp:913
#define mutASSERT
Definition: Defs.h:222
static void LoadInputDevices(tree_storage &config)
load the routes from a tree based configuration
Definition: Device.cpp:595
static void LoadRoutes(tree_storage &config)
Load the current routes from a tree storage.
static void LoadOutputDevices(tree_storage &config)
load the routes from a tree based configuration
Definition: Device.cpp:542
void mutabor::InputDeviceClass::DoNoteOff ( Route R,
int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 1216 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys, DEBUGLOG und mutabor::InputDeviceClass::current_keys_type::remove().

Wird benutzt von mutabor::InputDeviceClass::NoteOff() und mutabor::InputDeviceClass::Panic().

1219  {
1220  if (R) {
1221  R->NoteOff(key,velocity,make_unique);
1222  }
1223  current_keys.remove(key, velocity, make_unique, R);
1224  DEBUGLOG(routing,_T("(key = %d, channel = %lu, id = %lu)"),
1225  key,
1226  (unsigned long)R->get_session_id(),
1227  (unsigned long)make_unique);
1228  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void remove(int key, int velocity, int unique_id, Route &R)
Definition: Device.h:1042
current_keys_type current_keys
Definition: Device.h:1244
bool mutabor::BoxClass::DoOpen ( )
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 391 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::DoOpen() und mutabor::BoxClass::Open().

391  {
392  Reset();
393  // hidden::mutabor_reset_action_trace(box);
394  return true;
395  }
virtual void Reset()
Definition: Box.cpp:383
int DoParse ( )

Definiert in Zeile 612 der Datei GSP.cpp.

Benutzt BeginRange(), BeginSegment(), BeginSequenz(), BracketDeep, Brackets, CHAR0, CharIn(), CheckError(), Comma(), CurrentPos, DEBUGLOGBASE, DelimitChars, DoError(), EndParameter(), EndRange(), EndSegment(), EndSequenz(), Eof, GetSep(), GspError, IsLetter(), Komma, LastTag, mutChar, mutIsdigit, mutT, NextSequenz(), ParaMode, ReadNote(), ReadParaNumber(), ReadParaStr(), ReadTag(), SavePos() und Tag().

Wird benutzt von GspParse().

613 {
614  ParaMode = 0;
615 
616  while ( !Eof ) {
617  mutChar c = CHAR0;
618  SavePos();
619  Komma = 0;
620 
621  if ( ParaMode ) {
622  if ( mutIsdigit(c) || ( c == mutT('+')) || ( c == mutT('-')) ) // number parameter
623  {
624 
625  if ( ReadParaNumber() ) return GspError;
626  } else if ( c == mutT('"') ) // string parameter
627  {
628 
629  if ( ReadParaStr() ) return GspError;
630  } else // wrong parameter
631  {
632  return DoError(10);
633  }
634 
635  if ( CHAR0 == mutT('>') ) // end of parameterlist
636  {
637  CurrentPos++;
638  GetSep();
639 
640  if ( CheckError(EndParameter()) ) return GspError;
641 
642  ParaMode = 0;
643 
644  continue;
645  }
646  if ( !Komma ) // , or > expected
647  {
648  return DoError(11);
649  }
650  } else // not ParaMode
651  {
652  if ( LastTag ) LastTag --;
653 
654  if ( CharIn(c, DelimitChars) ) {
655  mutChar i = 0;
656 
657  while ( DelimitChars[(size_t)i] != c ) i++;
658 
659  if ( i & 1 ) // closing bracket
660  {
661 
662  if ( !BracketDeep )
663  return DoError(1);
664 
665 #ifdef WX
666  DEBUGLOGBASE (other,_T(""),
667  _T("brackets: %s, i= %d, last = %d"),
668  Brackets.c_str(),
669  i,
670  Brackets[Brackets.Len()-1]);
671 
672  if ( Brackets[Brackets.Len()-1] != i-1 )
673  return DoError(2 + (int) Brackets[BracketDeep-1]/2);
674 
675  Brackets = Brackets.Left(Brackets.Len()-1);
676 
677 #else
678  if ( Brackets[--BracketDeep] != i-1 )
679  return DoError(2 + Brackets[BracketDeep]/2);
680 
681 #endif
682  } else // opening bracket
683 #ifdef WX
684  Brackets += i;
685 
686 #else
687  Brackets[BracketDeep++] = i;
688 
689 #endif
690 #ifdef GMN_STRICT
691  if ( !LastTag && c == mutT('(') ) return DoError(41); // error: range without tag
692 
693 #endif
694  CurrentPos++;
695 
696  GetSep();
697 
698  switch ( c ) {
699  case mutT('{'): if ( CheckError(BeginSegment()) ) return GspError;
700 
701  break;
702 
703  case mutT('}'): if ( CheckError(EndSegment()) ) return GspError;
704 
705  break;
706 
707  case mutT('['): if ( CheckError(BeginSequenz()) ) return GspError;
708 
709  break;
710 
711  case mutT(']'): if ( CheckError(EndSequenz()) ) return GspError;
712 
713  break;
714 
715  case mutT('('): if ( CheckError(BeginRange()) ) return GspError;
716 
717  break;
718 
719  case mutT(')'): if ( CheckError(EndRange()) ) return GspError;
720 
721  break;
722  }
723 
724  /* if ( Komma )
725  if ( CheckError(NextSequenz()) ) return GspError; */
726  continue;
727  }
728 
729  if ( c == mutT('\\') ) {
730  if ( ReadTag() ) return GspError;
731 
732  /* if ( !ParaMode && Komma )
733  if ( CheckError(NextSequenz()) ) return GspError; */
734  continue;
735  }
736 
737  if ( c == mutT('|') ) {
738  CurrentPos++;
739  GetSep();
740 #ifdef NO_SHORT_BAR
741 
742  if ( CheckError(Tag(mutT("bar"))) ) return GspError;
743 
744 #else
745  if ( CheckError(Tag(mutT("|"))) ) return GspError;
746 
747 #endif
748  /* if ( Komma )
749  if ( CheckError(NextSequenz()) ) return GspError; */
750  continue;
751  }
752 
753  if ( c == mutT(',') ) {
754  if ( Brackets[BracketDeep-1] != 0 )
755  return DoError(24); // unexpected comma
756 
757  CurrentPos++;
758 
759  GetSep();
760 
761  if ( CheckError(Comma()) ) return GspError;
762 
763  continue;
764  }
765 
766  if ( IsLetter(c) ) {
767  if ( ReadNote() ) return GspError;
768 
769  if ( Komma )
770  if ( CheckError(NextSequenz()) ) return GspError;
771 
772  continue;
773  }
774 
775  // unallowed char
776  return DoError(20);
777  }
778  }
779 
780  return 0;
781 }
int Eof
Definition: GSP_File.cpp:43
int ReadNote()
Definition: GSP.cpp:493
#define CHAR0
Definition: GSP.cpp:214
int GspError
Definition: GSP.cpp:51
void SavePos()
Definition: GSP.cpp:204
if(!(yy_init))
Definition: mutlex.cc:890
char Komma
Definition: GSP.cpp:74
int BeginSegment()
Definition: GIS.cpp:563
int BeginRange()
Definition: GIS.cpp:650
mutString Brackets
Definition: GSP.cpp:77
#define mutChar
Definition: Defs.h:83
char ParaMode
Definition: GSP.cpp:73
int CheckError(int nr)
Definition: GSP.cpp:186
int ReadParaNumber()
Definition: GSP.cpp:372
int EndSegment()
Definition: GIS.cpp:580
mutChar DelimitChars[]
Definition: GSP.cpp:96
size_t CurrentPos
Definition: GSP_File.cpp:42
int BeginSequenz()
Definition: GIS.cpp:597
int Comma()
Definition: GIS.cpp:795
int ReadParaStr()
Definition: GSP.cpp:402
int IsLetter(mutChar c)
Definition: GSP.cpp:120
#define BracketDeep
Definition: GSP.cpp:78
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:167
int Tag(const mutString tagName)
Definition: GIS.cpp:735
int NextSequenz()
Definition: GIS.cpp:703
int EndParameter()
Definition: GIS.cpp:638
#define mutT
Definition: Defs.h:77
#define mutIsdigit
Definition: Defs.h:118
char LastTag
Definition: GSP.cpp:84
int CharIn(mutChar c, const mutChar *s)
Definition: GSP.cpp:112
int EndRange()
Definition: GIS.cpp:684
int GetSep()
Definition: GSP.cpp:227
int ReadTag()
Definition: GSP.cpp:442
#define DEBUGLOGBASE(level, type,...)
Definition: mutDebug.h:125
int EndSequenz()
Definition: GIS.cpp:614
void mutabor::BoxFactory::DoSaveBoxes ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 970 der Datei Box.cpp.

Benutzt STUBC.

971  {
972  STUBC;
973  }
#define STUBC
functions or code that has to be written – use for normal class members
Definition: mhDefs.h:144
void mutabor::DeviceFactory::DoSaveInputDevices ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 667 der Datei Device.cpp.

Benutzt STUBC.

668  {
669  STUBC;
670  }
#define STUBC
functions or code that has to be written – use for normal class members
Definition: mhDefs.h:144
void mutabor::DeviceFactory::DoSaveOutputDevices ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 657 der Datei Device.cpp.

Benutzt STUBC.

658  {
659  STUBC;
660  }
#define STUBC
functions or code that has to be written – use for normal class members
Definition: mhDefs.h:144
void mutabor::RouteFactory::DoSaveRoutes ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 575 der Datei Route.cpp.

Benutzt mutaborGUI::DebugCheckRoutes(), mutabor::tree_storage::DeleteGroup(), mutabor::tree_storage::GetPath(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::InitializeIds(), mutASSERT, mutabor::BoxFactory::SaveBoxes(), mutabor::DeviceFactory::SaveInputDevices(), mutabor::DeviceFactory::SaveOutputDevices(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::SaveRoutes(), mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::SaveRoutes().

576  {
577 #ifdef DEBUG
578  wxString oldpath = config.GetPath();
579 #endif
580  config.DeleteGroup(_T("Routing"));
581 
582  config.toLeaf(_T("Routing"));
583 
584  // clean configuration
585  // delete unused output devices
587 #ifdef DEBUG
589 #endif
590 
591  BoxFactory::SaveBoxes(config);
594  RouteClass::SaveRoutes(config);
595 
596  config.toParent();
597  mutASSERT(oldpath == config.GetPath());
598  }
static void SaveInputDevices(tree_storage &config)
write the routes to the configuration
Definition: Device.cpp:628
static void SaveBoxes(tree_storage &config)
write the routes to the configuration
Definition: Box.cpp:935
static void InitializeIds()
Initialize the internal device identifiers.
#define mutASSERT
Definition: Defs.h:222
static void SaveRoutes(tree_storage &config)
Save the current routes in a tree storage.
void DebugCheckRoutes()
Definition: DebugRoute.cpp:838
static void SaveOutputDevices(tree_storage &config)
write the routes to the configuration
Definition: Device.cpp:572
void mutabor::InputDeviceClass::DoSilenceKeys ( bool  remove)

Definiert in Zeile 362 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::current_keys_type::begin(), mutabor::InputDeviceClass::current_keys_type::clear(), mutabor::midi::CONTROLLER_OFF, mutabor::InputDeviceClass::current_keys, DEBUGLOG, mutabor::InputDeviceClass::current_keys_type::end() und mutabor::midi::get_holds().

Wird benutzt von mutabor::InputDeviceClass::Panic() und mutabor::InputDeviceClass::SilenceKeys().

362  {
364  size_t j = 0;
365  DEBUGLOG(routing,_T(""));
366  for (i = current_keys.begin();i!= current_keys.end();i++) {
367  for (const int * k = midi::get_holds();
368  *k >= 0; k++) {
369  i->route->Controller(*k,
371  i->unique_id);
372  }
373  i->route->NoteOff(i->key,i->velocity,i->unique_id);
374  j++;
375  }
376  DEBUGLOG(routing,_T("silenced %lu keys"),(unsigned long)j);
377  if (remove) {
379  }
380  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
current_keys_type current_keys
Definition: Device.h:1244
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:400
iterator mutabor::InputDeviceClass::current_keys_type::end ( )
inline
const_iterator mutabor::InputDeviceClass::current_keys_type::end ( ) const
inline

Definiert in Zeile 1073 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1073 { return map.end(); }
int EndParameter ( )

Definiert in Zeile 638 der Datei GIS.cpp.

Benutzt AddStr, DEBUGLOG2, mutT, GisToken::Sep und TagSep.

Wird benutzt von DoParse() und ReadTag().

639 {
640  DEBUGLOG2(gmnfile,_T(">"));
641 
642  if ( Para )
643  AddStr((LastPara->Sep), mutT(">"), Sep);
644  else
645  AddStr(TagSep, mutT(">"), Sep);
646 
647  return 0;
648 }
mutString Sep
Definition: GIS.h:137
mutString TagSep
Definition: GIS.cpp:116
GisToken * Para
Definition: GIS.cpp:118
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:500
GisToken * LastPara
Definition: GIS.cpp:118
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define mutT
Definition: Defs.h:77
mutString Sep
Definition: GSP.cpp:59
int EndRange ( )

Definiert in Zeile 684 der Datei GIS.cpp.

Benutzt GisTagEnd::Begin, BuildTag(), DEBUGLOG2, GisTagBegin::End, GisToken::Next, Tag() und TagMode.

Wird benutzt von DoParse().

685 {
686  DEBUGLOG2(gmnfile,_T(")\n"));
687 
688  if ( TagMode ) BuildTag();
689 
691 
692  *Current = Tag;
693 
694  Current = &(Tag->Next);
695 
697 
698  (Tag->Begin)->End = Tag;
699 
700  return 0;
701 }
char TagMode
Definition: GIS.cpp:112
GisTagBegin * LastOpenRange
Definition: GIS.cpp:110
GisToken * End
Definition: GIS.h:373
GisToken * Next
Definition: GIS.h:136
int BuildTag()
Definition: GIS.cpp:538
GisToken ** Current
Definition: GIS.cpp:108
Definition: GIS.h:420
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
int Tag(const mutString tagName)
Definition: GIS.cpp:735
GisTagBegin * Begin
Definition: GIS.h:424
mutString Sep
Definition: GSP.cpp:59
int EndSegment ( )

Definiert in Zeile 580 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, mutCopyString, GisToken::Next und TagMode.

Wird benutzt von DoParse().

581 {
582  DEBUGLOG2(gmnfile,_T("}"));
583 
584  if ( TagMode ) BuildTag();
585 
586  *Current = 0;
587 
589 
591 
593 
594  return 0;
595 }
char TagMode
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:136
#define mutCopyString(left, right)
Definition: Defs.h:90
int BuildTag()
Definition: GIS.cpp:538
GisToken * LastOpenBracket
Definition: GIS.cpp:108
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
int EndSequenz ( )

Definiert in Zeile 614 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, mutCopyString, GisToken::Next und TagMode.

Wird benutzt von DoParse().

615 {
616  DEBUGLOG2(gmnfile,_T("]"));
617 
618  if ( TagMode ) BuildTag();
619 
620  *Current = 0;
621 
623 
625 
627 
628  return 0;
629 }
char TagMode
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:136
#define mutCopyString(left, right)
Definition: Defs.h:90
int BuildTag()
Definition: GIS.cpp:538
GisToken * LastOpenBracket
Definition: GIS.cpp:108
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
TagList* EndTag ( TagList **  list,
GisTagEnd tagEnd 
)

Definiert in Zeile 496 der Datei GIS_Head.cpp.

Benutzt GisTagEnd::Begin, GTTag, if(), TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

497 {
498  TagList *Pos = *list;
499 
500  if ( Pos && Pos->Tag->Type() == GTTag )
501  Pos = Pos->Next;
502 
503  if ( Pos && tagEnd->Begin == Pos->Tag ) {
504  if ( Pos != *list )
505  RemoveTag(list);
506 
507  RemoveTag(list);
508  }
509 
510  return *list;
511 }
Definition: GIS.h:120
if(!(yy_init))
Definition: mutlex.cc:890
struct TagListData * Next
Definition: GIS_Head.h:148
GisTag * Tag
Definition: GIS_Head.h:149
TagList * RemoveTag(TagList **list)
Definition: GIS_Head.cpp:469
GisTagBegin * Begin
Definition: GIS.h:424
virtual GisType Type() const
Definition: GIS.h:335
mutabor::InputDeviceClass::current_keys_type::entry::entry ( int  k,
int  u,
int  v,
Route R,
InputDevice  i,
const ChannelData c,
void *  d 
)
inline
void Erase ( TagList list)

Definiert in Zeile 460 der Datei GIS_Head.cpp.

Benutzt TagListData::Next.

Wird benutzt von GisReadArtHead::~GisReadArtHead() und GisWriteHead::~GisWriteHead().

461 {
462  while ( list ) {
463  TagList *TopTag = list;
464  list = TopTag->Next;
465  delete TopTag;
466  }
467 }
struct TagListData * Next
Definition: GIS_Head.h:148
void mutabor::BoxClass::ExecuteCallbacks ( unsigned int  flags)
protected

Definiert in Zeile 813 der Datei Box.cpp.

Benutzt mutabor::BoxClass::callbacks.

813  {
814  doexecute_flags doit(flags);
815  std::for_each(callbacks.begin(),callbacks.end(),doit);
816  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:658
void mutabor::BoxClass::ExecuteCallbacks ( const char *  action)
protected

Definiert in Zeile 818 der Datei Box.cpp.

Benutzt mutabor::BoxClass::callbacks.

818  {
819  doexecute_action doit(action);
820  std::for_each(callbacks.begin(),callbacks.end(),doit);
821  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:658
mutabor::RouteFactory::FactoryAlreadySet::FactoryAlreadySet ( RouteFactory o,
RouteFactory n 
)
inline

Definiert in Zeile 572 der Datei Route.h.

572  : logic_error(gettext_noop("Route factory already set")),
573  old(o), created(n) {}
#define gettext_noop(a)
Definition: Defs.h:232
mutabor::BoxFactory::FactoryNotFound::FactoryNotFound ( int  i)
inline

Definiert in Zeile 715 der Datei Box.h.

Benutzt mutabor::BoxFactory::FactoryNotFound::message_.

715  :std::exception(), id(i) {
716  std::ostringstream writer(message_);
717  writer << "Factory for box type " << i << " has not been registered.";
718  message_ = writer.str();
719  }
mutabor::DeviceFactory::FactoryNotFound::FactoryNotFound ( int  i)
inline

Definiert in Zeile 1264 der Datei Device.h.

Benutzt mutabor::DeviceFactory::FactoryNotFound::message_.

1264  :std::exception(), id(i) {
1265  std::ostringstream writer(message_);
1266  writer << "Factory for device type " << i << " has not been registered.";
1267  message_ = writer.str();
1268  }
static listtype::iterator mutabor::BoxClass::FindInBoxList ( Box  b)
inlinestaticprotected

Definiert in Zeile 690 der Datei Box.h.

Benutzt mutabor::BoxClass::boxList.

Wird benutzt von mutabor::BoxClass::IsInBoxList().

690  {
691  typename listtype::iterator i =
692  std::find(boxList.begin(),
693  boxList.end(),
694  b);
695  return i;
696  }
static listtype boxList
Definition: Box.h:643
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static listtype::iterator mutabor::CommonTypedDeviceAPI< T, P, L >::FindInDeviceList ( DevicePtr  dev)
inlinestaticprotected

Definiert in Zeile 789 der Datei Device.h.

Wird benutzt von mutabor::CommonTypedDeviceAPI< InputDeviceClass >::IsInDeviceList().

789  {
790  typename listtype::iterator i =
791  std::find(deviceList.begin(),
792  deviceList.end(),
793  dev);
794  return i;
795  }
static listtype deviceList
Definition: Device.h:668
Route mutabor::FindRoute ( size_t  id)
int mutabor::ChannelData::get_bank_coarse ( ) const
inline

Definiert in Zeile 457 der Datei Device.h.

Benutzt mutabor::ChannelData::bank_coarse.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange().

457 { return bank_coarse; }
uint8_t bank_coarse
Definition: Device.h:466
int mutabor::ChannelData::get_bank_fine ( ) const
inline

Definiert in Zeile 458 der Datei Device.h.

Benutzt mutabor::ChannelData::bank_fine.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange().

458 { return bank_fine; }
uint8_t bank_fine
Definition: Device.h:467
int mutabor::ChannelData::get_bend ( )
inline
int mutabor::ChannelData::get_controller ( size_t  number) const
inline
int mutabor::BoxClass::get_distance ( int  note)

Definiert in Zeile 768 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_get_note_distance() und mutabor::hidden::mutabor_box_type::tonesystem.

768  {
769  if (!box) return INT_MIN;
771  }
tone_system * tonesystem
tone system.
Definition: box.h:152
struct mutabor_box_type * box
Definition: Box.h:648
int mutabor_get_note_distance(int note, tone_system *system)
Definition: box.h:81
virtual const mutStringRef mutabor::BoxClass::get_errors ( )
inlinevirtual

Return the collected errors and warnings.

This function is a prototype for potential error message collection in the GUI part.

Rückgabe
a string containing the collected error messages

Definiert in Zeile 624 der Datei Box.h.

Benutzt mutEmptyString und mutString.

Wird benutzt von mutabor::BoxClass::Compile().

624  {
625  static mutString nothing = mutEmptyString;
626  return nothing;
627  }
#define mutString
Definition: Defs.h:84
#define mutEmptyString
Definition: Defs.h:86
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller ( ) const
inline

Get the first changed controller.

Rückgabe
Iterator to the first changed controller.
Noch zu erledigen:
Provide changed_controller iterator type

Definiert in Zeile 328 der Datei Device.h.

Benutzt mutabor::ChannelData::controller_changed und mutabor::ChannelData::get_next_changed_controller().

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange() und mutabor::CommonMidiOutput< T, D >::do_UpdateControllers().

328  {
329  controller_vector::const_iterator retval = controller_changed.begin();
330  if (retval == controller_changed.end())
331  return retval;
332  if (*retval != -1)
333  return retval;
334  return get_next_changed_controller(retval);
335  }
controller_vector::const_iterator get_next_changed_controller(controller_vector::const_iterator last) const
Get the first changed controller.
Definition: Device.h:362
controller_vector controller_changed
Definition: Device.h:461
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller ( const ChannelData other) const
inline

Get the first changed controller that differs from the corresponding controller in another channel.

Parameter
otherThe channel data we compare ourselves to.
Rückgabe
iterator to the first differently changed controller.

Definiert in Zeile 344 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed und mutabor::ChannelData::get_next_changed_controller().

344  {
345  controller_vector::const_iterator retval = controller_changed.begin();
346  if (retval == controller_changed.end())
347  return retval;
348  if (*retval != -1 && controller[*retval] != other.controller[*retval])
349  return retval;
350  return get_next_changed_controller(other,retval);
351  }
controller_vector::const_iterator get_next_changed_controller(controller_vector::const_iterator last) const
Get the first changed controller.
Definition: Device.h:362
controller_vector controller
Definition: Device.h:460
controller_vector controller_changed
Definition: Device.h:461
long mutabor::BoxClass::get_frequency ( int  note)

Definiert in Zeile 757 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_get_note_frequency() und mutabor::hidden::mutabor_box_type::tonesystem.

Wird benutzt von mutabor::BoxClass::GetCurrentTones().

757  {
758  if (!box) return LONG_MIN;
760  }
tone_system * tonesystem
tone system.
Definition: box.h:152
long mutabor_get_note_frequency(int note, tone_system *system)
Definition: box.h:88
struct mutabor_box_type * box
Definition: Box.h:648
bool mutabor::ChannelData::get_hold ( ) const
inline
int mutabor::ChannelData::get_index ( int  message)
inline

Definiert in Zeile 237 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::midi::DATA_BUTTON_DECREMENT, mutabor::midi::DATA_BUTTON_INCREMENT, mutabor::midi::DATA_ENTRY_COARSE, mutabor::midi::DATA_ENTRY_FINE, mutabor::ChannelData::data_is_rpn, mutabor::midi::NON_REGISTERED_PARAMETER_COARSE, mutabor::midi::NON_REGISTERED_PARAMETER_FINE, mutabor::midi::PITCH_BEND_SENSITIVITY, mutabor::midi::REGISTERED_PARAMETER_COARSE und mutabor::midi::REGISTERED_PARAMETER_FINE.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Controller() und mutabor::CommonMidiOutput< T, D >::do_UpdateControllers().

237  {
238 
239  switch (message) {
241  return -1;
242 #if 0
243  // Don't send the parameter at this
244  // moment. the parameter should be
245  // sent when data is stored in the corresponding
246  // RPN/NRPN parameter
247  // nevertheess we may preprogramm the register
248  // address for later use, so return not -1
255  return 0x20000
258  }
259  return -1;
266  return get_index(0x10000
269  return -1;
270 #endif
275  if (!data_is_rpn
280  return 0x20000
283  } else if (data_is_rpn
288  return 0x10000
291  }
292  return -1;
293  }
294  return message;
295 
296  }
controller_vector controller
Definition: Device.h:460
int get_index(int message)
Definition: Device.h:237
int mutabor::BoxClass::get_index ( int  note)

Definiert in Zeile 763 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_get_note_index() und mutabor::hidden::mutabor_box_type::tonesystem.

763  {
764  if (!box) return INT_MIN;
765  return mutabor_get_note_index(note, box->tonesystem);
766  }
tone_system * tonesystem
tone system.
Definition: box.h:152
struct mutabor_box_type * box
Definition: Box.h:648
int mutabor_get_note_index(int note, tone_system *system)
Definition: box.h:75
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller ( controller_vector::const_iterator  last) const
inline

Get the first changed controller.

Parameter
lastlast position of the iterator.
Rückgabe
Iterator to the first changed controller.
Noch zu erledigen:
Provide changed_controller iterator type

Definiert in Zeile 362 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed, mutabor::hidden::last und mutASSERT.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange(), mutabor::CommonMidiOutput< T, D >::do_UpdateControllers() und mutabor::ChannelData::get_first_changed_controller().

362  {
363  mutASSERT(controller_changed.begin() <= last);
365  controller_vector::const_iterator retval = last;
366  do {
367  ++retval;
368  mutASSERT(retval == controller_changed.end()
369  || *retval == -1
370  || (size_t)(*retval) < controller.size());
371  } while (retval != controller_changed.end()
372  && (*retval == -1));
373  return retval;
374  }
controller_vector controller
Definition: Device.h:460
struct keyboard_ereignis * last
Definition: Runtime.cpp:149
controller_vector controller_changed
Definition: Device.h:461
#define mutASSERT
Definition: Defs.h:222
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller ( const ChannelData other,
controller_vector::const_iterator  last 
) const
inline

Get the first changed controller that differs from the corresponding controller in another channel.

Parameter
otherThe channel data we compare ourselves to.
lastlast position of the iterator.
Rückgabe
iterator to the first differently changed controller.

Definiert in Zeile 385 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed, mutabor::hidden::last und mutASSERT.

386  {
387  mutASSERT(controller_changed.begin() <= last);
389  controller_vector::const_iterator retval = last;
390  do {
391  ++retval;
392  mutASSERT(retval == controller_changed.end()
393  || *retval == -1
394  || (size_t)(*retval) < controller.size());
395  } while (retval != controller_changed.end()
396  && ((*retval == -1)
397  || ( (size_t)(*retval) < other.controller.size()
398  && controller[*retval] == other.controller[*retval])));
399  return retval;
400  }
controller_vector controller
Definition: Device.h:460
struct keyboard_ereignis * last
Definition: Runtime.cpp:149
controller_vector controller_changed
Definition: Device.h:461
#define mutASSERT
Definition: Defs.h:222
int mutabor::ChannelData::get_program ( ) const
inline

Definiert in Zeile 456 der Datei Device.h.

Benutzt mutabor::ChannelData::Sound.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange().

456 {return Sound; }
int mutabor::BoxClass::get_routefile_id ( ) const
inline

Definiert in Zeile 204 der Datei Box.h.

Benutzt mutabor::BoxClass::routefile_id.

Wird benutzt von mutaborGUI::MutFrame::CeToggleKey() und mutabor::BoxClass::GetLabel().

204  {
205  return routefile_id;
206  }
int routefile_id
Definition: Box.h:650
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::get_routefile_id ( ) const
inline

Definiert in Zeile 392 der Datei Route.h.

392  {
393  return routefile_id;
394  }
int mutabor::Device::get_routefile_id ( ) const
inline

Definiert in Zeile 585 der Datei Device.h.

Benutzt mutabor::Device::routefile_id.

Wird benutzt von compat30::SaveRoutes().

585  {
586  return routefile_id;
587  }
int routefile_id
Definition: Device.h:622
size_t mutabor::BoxClass::get_session_id ( ) const
inline

Definiert in Zeile 163 der Datei Box.h.

Benutzt mutabor::BoxClass::session_id.

163  {
164  return session_id;
165  }
idtype< BoxClass > session_id
Definition: Box.h:649
template<class I = InputDevice, class O = OutputDevice, class B = Box>
size_t mutabor::TRouteClass< I, O, B >::get_session_id ( ) const
inline
size_t mutabor::Device::get_session_id ( ) const
inline

Definiert in Zeile 581 der Datei Device.h.

Benutzt mutabor::Device::session_id.

581  {
582  return session_id;
583  }
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:621
template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::GetActive ( ) const
inline

Definiert in Zeile 315 der Datei Route.h.

315  {
316  return Active;
317  }
Box mutabor::BoxClass::GetBox ( int  id,
boxidtype  kind 
)
static

Scan the list of Boxes for a given id.

id (int) id to scan for

Rückgabe
(Box) pointer to the input device with the given id if found, NULL else.

Definiert in Zeile 230 der Datei Box.cpp.

Benutzt UNREACHABLECT.

Wird benutzt von mutaborGUI::BoxDlg::AddButtonPressed(), mutaborGUI::CheckBoxesUsed(), mutaborGUI::MutFrame::CmDoActivate(), mutaborGUI::MutBoxShape::DoLeftDblClick(), mutabor::BoxClass::GetOrCreateBox() und mutaborGUI::MutBoxShape::readDialog().

231  {
232  for (typename listtype::iterator i = boxList.begin();
233  i != boxList.end();
234  i++) {
235  int devid;
236  switch (kind) {
237  case IDTypeSession:
238  devid = (*i)->get_session_id();
239  break;
240  case IDTypeFile:
241  devid = (*i)->get_routefile_id();
242  break;
243  default:
245  return *(boxList.end());
246  }
247  if (devid == id) {
248  return (*i);
249  }
250  }
251  return NULL;
252  }
static listtype boxList
Definition: Box.h:643
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
BoxClass(int id=-1)
Definition: Box.cpp:777
template<class I = InputDevice, class O = OutputDevice, class B = Box>
Box mutabor::TRouteClass< I, O, B >::GetBox ( ) const
inline

Definiert in Zeile 323 der Datei Route.h.

Wird benutzt von mutaborGUI::Check() und mutabor::CommonMidiOutput< T, D >::do_UpdateTones().

323  {
324  return box;
325  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetBoxId ( )
inline

Definiert in Zeile 310 der Datei Route.h.

310  {
311  return boxid;
312  }
static const listtype& mutabor::BoxClass::GetBoxList ( )
inlinestatic
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetChannel ( int  key,
size_t  channel,
size_t  id 
)
inline

Definiert in Zeile 241 der Datei Route.h.

241  {
242  if (channel == session_id())
243  return Out->GetChannel(key, channel, id);
244  return midi::NO_CHANNEL;
245  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:470
OutputDevice Out
Definition: Route.h:460
int mutabor::BoxClass::GetChannel ( int  key,
size_t  channel,
size_t  id 
)

Get the MIDI channel of a given tone.

Parameter
noteNote that has been received
channelInternal unique channel id
idInternal unique Note id
Rückgabe
MIDI channel of the note

Definiert in Zeile 727 der Datei Box.cpp.

Benutzt mutabor::midi::NO_CHANNEL, mutabor::BoxClass::routes und TRACE.

Wird benutzt von mutabor::BoxClass::GetCurrentTones().

728  {
729  for (routeListType::const_iterator R = routes.begin();
730  R != routes.end(); R++) {
731  int c = (*R)->GetChannel(key,channel,id);
732 
733  if ( c != midi::NO_CHANNEL ) {
734  TRACE;
735  return c;
736  }
737  }
738  return midi::NO_CHANNEL;
739  }
#define TRACE
Definition: mutDebug.h:150
routeListType routes
Definition: Box.h:651
int mutabor::OutputDeviceClass::GetChannel ( int  inkey,
size_t  channel,
size_t  id 
)
inline

Definiert in Zeile 855 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_GetChannel() und mutabor::OutputDeviceClass::write_lock.

855  {
856  ScopedLock lock(write_lock);
857  return do_GetChannel(inkey,channel,id);
858  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual int do_GetChannel(int inkey, size_t channel, size_t id)=0
virtual ChannelData& mutabor::InputDeviceClass::GetChannelData ( const current_keys_type::entry key) const
pure virtual
BoxClass::current_tone_list mutabor::BoxClass::GetCurrentTones ( )

Definiert in Zeile 621 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_box_type::file, mutabor::BoxClass::get_frequency(), mutabor::BoxClass::GetChannel(), mutabor::BoxClass::tone_entry::invalid, mutabor::hidden::mutabor_box_type::key_count, mutabor::hidden::mutabor_convert_tone_to_pitch(), mutabor::hidden::mutabor_find_key_in_box(), MUTABOR_INVALID_KEY, MUTABOR_NO_KEY und mutabor::BoxClass::mutex.

622  {
623  ScopedLock lock(mutex);
624  current_tone_list retval;
625  if (!box) return retval;
626  struct mutabor_logic_parsed * file = box->file;
627  if (!file) return retval;
628  // no file means no logic (implying no current logic)
629 
630  int count = box->key_count;
631  if (!count) return retval;
632  retval.resize(count);
633 
634  size_t i = 0;
635  for (mutabor_note_type * key = mutabor_find_key_in_box(box,0);
636  key != NULL;
637  key = mutabor_find_key_in_box(box,key->next)) {
638 
639  int index = key->number;
640  mutabor_tone tone;
641 
642  switch (tone=get_frequency(index)) {
643  case MUTABOR_NO_KEY:
644  break;
645  case MUTABOR_INVALID_KEY:
646  retval[i].flag=tone_entry::invalid;
647  break;
648  default:
649  retval[i] = current_tone_entry(index,
651  key->id,
652  GetChannel(index, key->channel, key->id));
653  }
654  ++i;
655  }
656  return retval;
657  }
#define MUTABOR_NO_KEY
Definition: Global.h:88
double mutabor_convert_tone_to_pitch(mutabor_tone tone)
Convert a tone to half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:115
wxMutexLocker ScopedLock
Definition: thread.h:57
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:215
#define MUTABOR_INVALID_KEY
Definition: Global.h:89
struct mutabor_box_type * box
Definition: Box.h:648
std::vector< current_tone_entry > current_tone_list
Definition: Box.h:431
mutabor_interval mutabor_tone
Definition: Interpre.h:69
struct mutabor_logic_parsed * file
Definition: box.h:180
Mutex mutex
Definition: Box.h:672
int GetChannel(int key, size_t channel, size_t id)
Get the MIDI channel of a given tone.
Definition: Box.cpp:727
long get_frequency(int note)
Definition: Box.cpp:757
template<class T , class P , class L >
CommonTypedDeviceAPI< T, P, L >::DevicePtr mutabor::CommonTypedDeviceAPI< T, P, L >::GetDevice ( int  id,
devidtype  kind 
)
static

Scan the list of input devices for a given id.

id (int) id to scan for

Rückgabe
(OutputDevice) pointer to the input device with the given id if found, NULL else.

Definiert in Zeile 233 der Datei Device.cpp.

Benutzt UNREACHABLECT.

234  {
235  for (typename listtype::iterator i = deviceList.begin();
236  i != deviceList.end();
237  i++) {
238  int devid;
239  switch (kind) {
240  case IDTypeSession:
241  devid = (*i)->get_session_id();
242  break;
243  case IDTypeFile:
244  devid = (*i)->get_routefile_id();
245  break;
246  case IDTypeHardware:
247  default:
249  return *(deviceList.end());
250  }
251  if (devid == id) {
252  return (*i);
253  }
254  }
255  return NULL;
256  }
static listtype deviceList
Definition: Device.h:668
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetDeviceId ( )
inline

Definiert in Zeile 303 der Datei Route.h.

303  {
304  return inputid;
305  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetDeviceId ( )
inline

Definiert in Zeile 307 der Datei Route.h.

307  {
308  return outputid;
309  }
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static const listtype& mutabor::CommonTypedDeviceAPI< T, P, L >::GetDeviceList ( )
inlinestatic

Definiert in Zeile 726 der Datei Device.h.

726  {
727  return deviceList ;
728  }
static listtype deviceList
Definition: Device.h:668
ChordNote * GisWriteHead::GetFreeNote ( )

Definiert in Zeile 1043 der Datei GIS_Head.cpp.

Benutzt ChordNote::AddGis(), GisWriteHead::ChordNotes, CNNoteOn, mutEmptyString, mutT und ChordNote::Next.

Wird benutzt von GisWriteHead::ProceedGis().

1044 {
1045  if ( !ChordNotes )
1046  return ChordNotes = new ChordNote(this);
1047 
1048  ChordNote **ANote = &ChordNotes;
1049 
1050  while ( *ANote ) {
1051  if ( !((*ANote)->Status & CNNoteOn) ) {
1052  if ( (*ANote)->CurrentTime )
1053  (*ANote)->AddGis(new GisNote(mutT("_"), mutEmptyString, 0, (*ANote)->CurrentTime, mutT(" "), 0));
1054 
1055  return *ANote;
1056  }
1057 
1058  ANote = &(*ANote)->Next;
1059  }
1060 
1061  *ANote = new ChordNote(ChordNotes);
1062 
1063  return *ANote;
1064 }
ChordNote * ChordNotes
Definition: GIS_Head.h:325
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:865
ChordNote * Next
Definition: GIS_Head.h:435
Definition: GIS.h:457
#define mutT
Definition: Defs.h:77
#define CNNoteOn
Definition: GIS_Head.h:425
#define mutEmptyString
Definition: Defs.h:86
GisType GetGisType ( GisToken token)

Definiert in Zeile 833 der Datei GIS.cpp.

Benutzt GTNull und GisToken::Type().

Wird benutzt von CloseAllSubs(), GetMidiInstrument(), GetReal(), GetTheSpeedFactor(), mutabor::MutaborTag(), ChordNote::MutNoteOff(), mutabor::InputGis::Proceed() und MisFile::WriteGis().

834 {
835  if ( token )
836  return token->Type();
837  else
838  return GTNull;
839 }
Definition: GIS.h:116
virtual GisType Type() const
Definition: GIS.h:154
template<class I = InputDevice, class O = OutputDevice, class B = Box>
const InputDevice& mutabor::TRouteClass< I, O, B >::GetInputDevice ( ) const
inline

Definiert in Zeile 164 der Datei Route.h.

Wird benutzt von mutaborGUI::Check().

164  {
165  return In;
166  }
InputDevice In
Definition: Route.h:461
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetInputFrom ( ) const
inline

Definiert in Zeile 343 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

343  {
344  return IFrom;
345  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetInputTo ( ) const
inline

Definiert in Zeile 359 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

359  {
360  return ITo;
361  }
int GisNote::GetKey ( )

Definiert in Zeile 396 der Datei GIS.cpp.

Benutzt Acc2Int(), GisNote::Accedentials, Name2Key() und GisNote::Octave.

398 {
399  int Key = Name2Key(Name);
400 
401  if ( Key == -1 ) return -1;
402 
403  Key += ( Octave + 5) * 12;
404 
405  Key += Acc2Int(Accedentials);
406 
407  return Key;
408 }
mutString Name
Definition: GIS.h:461
int Octave
Definition: GIS.h:463
int Name2Key(const mutString name)
Definition: GIS.cpp:283
mutString Accedentials
Definition: GIS.h:462
int Acc2Int(const mutString acc)
Definition: GIS.cpp:316
virtual mutString mutabor::BoxClass::GetLabel ( )
inlinevirtual

Definiert in Zeile 185 der Datei Box.h.

Benutzt _, mutabor::Box0, mutabor::BoxClass::get_routefile_id(), mutabor::BoxClass::GetType(), mutabor::GmnBox, mutabor::NewBox und mutabor::NoBox.

185  {
186  switch (GetType()) {
187  case NewBox:
188  return _("New box");
189  case NoBox:
190  return _("No box");
191  case GmnBox:
192  return _("GUIDO box");
193  case Box0:
194  return mutString::Format(_("Box %d"),
195  get_routefile_id());
196  }
197  return _("Unknown box type");
198  }
int get_routefile_id() const
Definition: Box.h:204
virtual BoxType GetType()
Definition: Box.h:167
#define _
Definition: Execute.cpp:57
BoxClass::logic_list mutabor::BoxClass::GetLogics ( )

Get a list of currently defined logics.

Zu beachten
: this function replaces GetMutTag() from Runtime.cpp
Rückgabe
List of logic descriptions.

Definiert in Zeile 566 der Datei Box.cpp.

Benutzt mutabor::append_triggers(), mutabor::hidden::mutabor_box_type::current_logic, mutabor::hidden::mutabor_box_type::file, mutabor::hidden::mutabor_logic_parsed::global_harmonies, mutabor::hidden::mutabor_logic_parsed::global_keystrokes, mutabor::hidden::mutabor_logic_parsed::global_midi_inputs, mutabor::hidden::logik::harmony_list, mutabor::hidden::logik::keystroke_list, mutabor::hidden::logik::midi_input_list und mutabor::BoxClass::mutex.

566  {
567  ScopedLock lock(mutex);
568  logic_list retval;
569  if (!box) return retval;
570  struct mutabor_logic_parsed * file = box->file;
571  if (!file) return retval;
572  // no file means no logic (implying no current logic)
573 
574  struct mutabor::hidden::logik * logic = box->current_logic;
575  append_triggers (retval, box, logic, file->global_keystrokes );
576  append_triggers (retval, box, logic, file->global_harmonies );
577  append_triggers (retval, box, logic, file->global_midi_inputs);
578  if (logic) {
579  append_triggers(retval, box, logic, logic->keystroke_list );
580  append_triggers(retval, box, logic, logic->harmony_list );
581  append_triggers(retval, box, logic, logic->midi_input_list);
582  }
583  return retval;
584  }
struct keyboard_ereignis * keystroke_list
Definition: Global.h:439
wxMutexLocker ScopedLock
Definition: thread.h:57
struct midi_ereignis * midi_input_list
Definition: Global.h:440
struct mutabor_box_type * box
Definition: Box.h:648
struct logik * current_logic
Definition: box.h:156
std::list< logic_entry > logic_list
Definition: Box.h:388
struct mutabor_logic_parsed * file
Definition: box.h:180
Mutex mutex
Definition: Box.h:672
struct harmonie_ereignis * harmony_list
Definition: Global.h:438
static void append_triggers(BoxClass::logic_list &list, mutabor_box_type *box, struct mutabor::hidden::logik *logic, struct keyboard_ereignis *keystrokes)
Definition: Box.cpp:484
GisWriteHead * GetMatchingHeader ( GisWriteHead **  head,
const mutString  id 
)

Definiert in Zeile 1448 der Datei GIS_Head.cpp.

Benutzt h, GisWriteHead::Id, GisWriteHead::InsertAfter(), mutLen, mutStrCmp, GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von GisWriteHeadGis().

1449 {
1450  GisWriteHead *h = *head, *LastHead = 0;
1451  GisWriteHead *Boss = h;
1452  size_t BossIdLength = mutLen(h->Id);
1453  char CmpRes = 0;
1454  // search header
1455 
1456  while ( h ) {
1457 
1458 #ifdef WX
1459 
1460  if ( (id.StartsWith(h->Id)) && (mutLen(h->Id) >= BossIdLength) ) {
1461  Boss = h;
1462  BossIdLength = mutLen(h->Id) + 1;
1463  }
1464 
1465  CmpRes = mutStrCmp(h->Id, id);
1466 
1467  if ( CmpRes >= 0 ) break;
1468 
1469 #else
1470  if ( !strncmp(h->Id, id, strlen(h->Id)) && (strlen(h->Id) >= BossIdLength) ) {
1471  Boss = h;
1472  BossIdLength = strlen(h->Id) + 1;
1473  }
1474 
1475  CmpRes = strcmp(h->Id, id);
1476 
1477  if ( CmpRes >= 0 ) break;
1478 
1479 #endif
1480  LastHead = h;
1481 
1482  h = h->Next;
1483  }
1484 
1485  if ( CmpRes ) // insert a new header
1486  {
1487  h = new GisWriteHead(Boss, id);
1488 
1489  if ( LastHead ) // not at the first position
1490  h->InsertAfter(LastHead);
1491  else // first position in header list
1492  {
1493  h->Prev = (GisWriteHead*)head;
1494  h->Next = *head;
1495 
1496  if ( *head ) (*head)->Prev = h;
1497 
1498  *head = h;
1499  }
1500  }
1501 
1502  return h;
1503 }
GisReadArtHead * h
Definition: mutgis.cpp:5
#define mutLen(x)
Definition: Defs.h:97
#define mutStrCmp(left, right)
Definition: Defs.h:93
mutString Id
Definition: GIS_Head.h:322
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * InsertAfter(GisWriteHead *position)
Definition: GIS_Head.cpp:1003
GisWriteHead * Prev
Definition: GIS_Head.h:317
char GetMidiInstrument ( GisToken token)

Definiert in Zeile 58 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG2, GetGisType(), GTParaStr, mutString und mutT.

Wird benutzt von GisReadArtHead::Read().

59 {
60  if ( token && GetGisType(token) == GTParaStr ) {
61  mutString t;
62 #ifdef WX
63  mutString v;
64  long value;
65  t=(((GisParaStr*)token)->s).Upper();
66  DEBUGLOG2(gmnfile,_T("t= %s"), t.c_str());
67 
68  if (t.StartsWith(mutT("MIDI"),&v)) {
69  v.ToLong(&value);
70  DEBUGLOG2(gmnfile,_T("v= %s"), v.c_str());
71  return (char) value;
72  }
73 
74 #else
75  strncpy(t, ((GisParaStr*)token)->s, 30);
76 
77  strupr(t);
78 
79  if ( !strncmp(t, "MIDI", 4) )
80  return atoi(&t[4]);
81 
82 #endif
83  }
84 
85  return 0;
86 }
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define mutString
Definition: Defs.h:84
#define mutT
Definition: Defs.h:77
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:833
Definition: GIS.h:126
MutaborModeType mutabor::Device::GetMode ( )
inline

Definiert in Zeile 547 der Datei Device.h.

Benutzt mutabor::Device::Mode.

Wird benutzt von CommonFileDeviceTest::testTimer().

547  {
548  return Mode;
549  }
enum MutaborModeType Mode
Definition: Device.h:626
const wxString& mutabor::Device::GetName ( ) const
inline

Definiert in Zeile 562 der Datei Device.h.

Benutzt mutabor::Device::Name.

Wird benutzt von mutaborGUI::MutOutputMidiFileDeviceShape::InitializeDialog() und mutaborGUI::MutOutputMidiDeviceShape::readDialog().

562  {
563  return Name;
564  }
mutString Name
Definition: Device.h:623
static int mutabor::BoxClass::GetNextFreeBox ( )
inlinestatic
static mutint64 mutabor::InputDeviceClass::GetNO_DELTA ( )
inlinestatic

Definiert in Zeile 1170 der Datei Device.h.

Benutzt mutint64.

Wird benutzt von mutabor::InputDeviceClass::IsDelta(), testCommonFileDeviceTimer::PrepareNextEvent(), mutabor::InputGis::ReadOn() und mutabor::CommonFileInputDevice::ThreadPlay().

1170  {
1171  return mutint64(std::numeric_limits<mutint64>::max());
1172  }
#define mutint64
Definition: Defs.h:70
ChordNote * GisWriteHead::GetNote ( int  instrId,
int  taste 
)

Definiert in Zeile 1067 der Datei GIS_Head.cpp.

Benutzt ChordNote::CheckId(), GisWriteHead::ChordNotes und ChordNote::Next.

1068 {
1069  ChordNote *ANote = ChordNotes;
1070 
1071  while ( ANote ) {
1072  if ( ANote->CheckId(instrId, taste) )
1073  break;
1074 
1075  ANote = ANote->Next;
1076  }
1077 
1078  return ANote;
1079 }
ChordNote * ChordNotes
Definition: GIS_Head.h:325
ChordNote * Next
Definition: GIS_Head.h:435
char CheckId(int instrId, int taste)
Definition: GIS_Head.h:509
Box mutabor::BoxClass::GetOrCreateBox ( int  id)
inlinestatic

Return the box that is associated with the corrent id.

In case such a box does not exist the box is created

Parameter
idId to be fetched.
Rückgabe
Box that has been found or created

Definiert in Zeile 814 der Datei Box.h.

Benutzt mutabor::Box0, mutabor::BoxFactory::Create(), mutabor::BoxClass::GetBox() und mutabor::BoxClass::IDTypeFile.

Wird benutzt von mutaborGUI::GUIRouteFactory::DoCreateBoxChannelShape(), mutaborGUI::MutRouteWnd::InitShapes(), mutabor::TRouteClass< I, O, B >::Load(), compat30::LoadRoutes(), mutabor::MutaborTag() und mutaborGUI::MutBoxShape::readDialog().

814  {
815  Box b = GetBox(id,IDTypeFile);
816  if (b) return b;
817  else if (id > Box0)
818  return BoxFactory::Create(Box0,id);
819  else return BoxFactory::Create(id);
820  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
static Box GetBox(int id, boxidtype kind)
Scan the list of Boxes for a given id.
Definition: Box.cpp:230
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
template<class I = InputDevice, class O = OutputDevice, class B = Box>
const OutputDevice& mutabor::TRouteClass< I, O, B >::GetOutputDevice ( ) const
inline

Definiert in Zeile 160 der Datei Route.h.

Wird benutzt von mutaborGUI::Check().

160  {
161  return Out;
162  }
OutputDevice Out
Definition: Route.h:460
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetOutputFrom ( ) const
inline
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetOutputTo ( ) const
inline
GisToken * GisTag::GetPara ( int  nr)

Definiert in Zeile 230 der Datei GIS.cpp.

Benutzt GisToken::Next und GisTag::Para.

231 {
232  GisToken *P = Para;
233 
234  while ( P ) {
235  if ( nr <= 1 ) break;
236 
237  P = P->Next;
238 
239  nr--;
240  }
241 
242  return P;
243 }
Definition: GIS.h:132
GisToken * Para
Definition: GIS.h:299
GisToken * Next
Definition: GIS.h:136
GisType GisTag::GetParaType ( int  nr)

Definiert in Zeile 212 der Datei GIS.cpp.

Benutzt GTNull, GisToken::Next, GisTag::Para und GisToken::Type().

213 {
214  GisToken *P = Para;
215 
216  while ( P ) {
217  if ( nr <= 1 ) break;
218 
219  P = P->Next;
220 
221  nr--;
222  }
223 
224  if ( P )
225  return P->Type();
226  else
227  return GTNull;
228 }
Definition: GIS.h:116
Definition: GIS.h:132
GisToken * Para
Definition: GIS.h:299
GisToken * Next
Definition: GIS.h:136
virtual GisType Type() const
Definition: GIS.h:154
double GetReal ( GisToken token)

Definiert in Zeile 48 der Datei GIS_Head.cpp.

Benutzt GetGisType(), GTParaInt und GTParaReal.

Wird benutzt von GisReadArtHead::Read().

49 {
50  if ( GetGisType(token) == GTParaInt )
51  return (double) ((GisParaInt*)token)->i;
52  else if ( GetGisType(token) == GTParaReal )
53  return ((GisParaReal*)token)->x;
54 
55  return 0;
56 }
Definition: GIS.h:124
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:833
template<class I = InputDevice, class O = OutputDevice, class B = Box>
static const routeListType& mutabor::TRouteClass< I, O, B >::GetRouteList ( )
inlinestatic

Definiert in Zeile 400 der Datei Route.h.

400  {
401  return routeList;
402  }
static routeListType routeList
Definition: Route.h:469
const routeListType& mutabor::BoxClass::GetRoutes ( ) const
inline

Definiert in Zeile 253 der Datei Box.h.

Benutzt mutabor::BoxClass::routes.

Wird benutzt von mutaborGUI::Check().

253  {
254  return routes;
255  }
routeListType routes
Definition: Box.h:651
routeListType& mutabor::BoxClass::GetRoutes ( )
inline

Definiert in Zeile 257 der Datei Box.h.

Benutzt mutabor::BoxClass::routes.

257  {
258  return routes;
259  }
routeListType routes
Definition: Box.h:651
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
const routeListType& mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ( ) const
inline

Definiert in Zeile 717 der Datei Device.h.

Wird benutzt von mutaborGUI::Check().

717  {
718  return routes;
719  }
routeListType routes
Definition: Device.h:627
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
routeListType& mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ( )
inline

Definiert in Zeile 721 der Datei Device.h.

721  {
722  return routes;
723  }
routeListType routes
Definition: Device.h:627
int GetSep ( )

Definiert in Zeile 227 der Datei GSP.cpp.

Benutzt AddStr(), CHAR0, CHAR1, CharIn(), CurrentLine, CurrentPos, DEBUGLOG2, DoError(), Eof, GspCurrentLineNr, GspError, Komma, mutChar, mutEmptyString, mutT, NEW_LINE, ParaMode, ReadNewLine(), Sep, SepChars, SepPos und TAKESEP.

Wird benutzt von DoParse(), GspParse(), ReadLong(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

228 {
229 #ifdef WX
231 #else
232  SepPos = 0;
233 #endif
234  Komma = 0;
235  int RemDeep = 0;
236  int RemLine = 0;
237 
238  while ( !Eof && !GspError ) {
239 #ifdef WX
240  DEBUGLOG2(other,_T("%d >= %d? Sep.Len=%d"),
241  (int)CurrentPos,(int)CurrentLine.Len(),(int)Sep.Len());
242  DEBUGLOG2(other,_T("%s"),CurrentLine.c_str());
243 
244  if (CurrentPos >= CurrentLine.Len())
245 #else
246  mutChar c = CHAR0;
247 
248  if ( !c ) // new Line
249 #endif
250  {
251 
252  if ( ReadNewLine() )
253  {
254  DoError(32);
255 #ifdef WX
256  Sep = Sep.Left(1);
257  DEBUGLOG2(other,_T("Returning 1 at with (%d) '%s'"),
258  (int)SepPos, Sep.c_str());
259  return SepPos;
260 #else
261  return ( SepPos = 1 );
262 #endif
263  }
264 
265  RemLine = 0;
266 
267  if ( GspCurrentLineNr != 1 )
268  AddStr(Sep, SepPos, NEW_LINE);
269 
270  continue;
271  }
272 
273 #ifdef WX
274  mutChar c = CHAR0;
275 
276 #endif
277 
278  if ( c == mutT('(') && CHAR1 == mutT('*') ) // comment start
279  {
280  TAKESEP;
281  TAKESEP;
282  RemDeep++;
283  continue;
284  }
285 
286  if ( RemDeep ) // during a comment
287  {
288 
289  if ( c == mutT('*') && CHAR1 == mutT(')') )
290  {
291  TAKESEP;
292  TAKESEP;
293  RemDeep--;
294  } else
295  TAKESEP;
296 
297  continue;
298  }
299 
300  if ( RemLine ) {
301  TAKESEP;
302  continue;
303  }
304 
305  if ( c == mutT('%') ) // line comment
306  {
307  RemLine = 1;
308  continue;
309  }
310 
311  if ( CharIn(c, SepChars) ) // separating chars
312  {
313  TAKESEP;
314  continue;
315  }
316 
317  if ( c == mutT(',') && ParaMode ) // sequenz separator
318  {
319  TAKESEP;
320  Komma = 1;
321  continue;
322  }
323 
324  break;
325  }
326 
327  DEBUGLOG2(other,_T("Returning with (%d) '%s'"),(int)SepPos,Sep.c_str());
328 
329 #ifndef WX
330  Sep[SepPos] = 0;
331 #endif
332  return SepPos;
333 }
int Eof
Definition: GSP_File.cpp:43
#define TAKESEP
Definition: GSP.cpp:223
mutChar SepChars[]
Definition: GSP.cpp:94
int ReadNewLine()
Definition: GSP_File.cpp:83
#define CHAR0
Definition: GSP.cpp:214
int GspError
Definition: GSP.cpp:51
char Komma
Definition: GSP.cpp:74
mutString CurrentLine
Definition: GSP_File.cpp:38
#define NEW_LINE
Definition: GSP.cpp:93
#define mutChar
Definition: Defs.h:83
char ParaMode
Definition: GSP.cpp:73
#define CHAR1
Definition: GSP.cpp:215
size_t CurrentPos
Definition: GSP_File.cpp:42
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:167
int GspCurrentLineNr
Definition: GSP.cpp:47
#define mutT
Definition: Defs.h:77
mutString Sep
Definition: GSP.cpp:59
void AddStr(mutString &Target, int Pos, const mutString &Source)
Definition: GSP.cpp:104
int CharIn(mutChar c, const mutChar *s)
Definition: GSP.cpp:112
#define SepPos
Definition: GSP.cpp:66
#define mutEmptyString
Definition: Defs.h:86
int GetTagId ( const mutString name,
mutString registered 
)

Definiert in Zeile 841 der Datei GIS.cpp.

Benutzt DEBUGLOG2, mutEmptyString, mutStrEq2, NTAGS, NTAGSHORTS, Tags und TagShorts.

Wird benutzt von GisTag::GisTag().

843 {
844  if (!name) {
845  registered = Tags[0];
846  return 0;
847  }
848 
849  // check normal form
850  int i;
851 
852  for (i = 0; i < NTAGS; i++) {
853  DEBUGLOG2(gmnfile,_T("comparing '%s' with tag'%s'"),name.c_str(),Tags[i]);
854  if ( mutStrEq2(wxString(name), Tags[i]) ) {
855  registered = Tags[i];
856  return i;
857  } ;
858  }
859 
860  // check short form
861  for (i = 0; i < NTAGSHORTS; i++) {
862  DEBUGLOG2(gmnfile,_T("comparing '%s' with tag'%s'"),name.c_str(),TagShorts[i]);
863 
864  if ( mutStrEq2(name, TagShorts[i]) ) {
865  registered = TagShorts[i];
866  return i;
867  }
868  }
869 
870  // no registered tag
871  registered = mutEmptyString;
872 
873  return -1;
874 }
#define mutStrEq2(left, right)
Definition: Defs.h:95
const mutChar * TagShorts[NTAGSHORTS]
Definition: GIS.cpp:96
const mutChar * Tags[NTAGS]
Definition: GIS.cpp:40
#define NTAGS
Definition: GIS.h:83
const char * name
Definition: Global.h:432
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define NTAGSHORTS
Definition: GIS.h:84
#define mutEmptyString
Definition: Defs.h:86
mutint64 GetTheSpeedFactor ( GisToken token)

This function returns the speed factor that must be multiplied to the duration value in order to get a delta timestamp in μs.

Parameter
tokenToken to be parsed in the form numerator/denominator = bpm.
Rückgabe
fraction in μs for 1/1 duration.

Definiert in Zeile 98 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG2, GetGisType(), GTParaStr, mutint64, mutString, mutT, TowxString() und ZIFFER.

Wird benutzt von GisReadArtHead::Read().

99 {
100  DEBUGLOG2(gmnfile,_T("%p"),(void*)token);
101 
102  mutint64 retval = 2l * 1000l * 1000l; // 1/4 = 120bpm => 1/1 = 2s
103 
104  if ( token && GetGisType(token) == GTParaStr ) {
105  const mutString &t = ((GisParaStr*) token) -> s;
106 
107  DEBUGLOG2(gmnfile,_T("%s"),t.c_str());
108 
109  size_t i = 0;
110 
111  mutint64 numerator = 0, denominator = 0, bpm=0;
112 
113  // trim value
114  while ( !ZIFFER && t[i] )
115  i++;
116 
117  while ( ZIFFER )
118  numerator = numerator*10 + (t[i++]-mutT('0'));
119 
120  while ( !ZIFFER && t[i] )
121  i++;
122 
123  while ( ZIFFER )
124  denominator = denominator*10 + (t[i++]-mutT('0'));
125 
126  while ( !ZIFFER && t[i] )
127  i++;
128 
129  while ( ZIFFER )
130  bpm = bpm*10 + (t[i++]-mutT('0'));
131 
132  DEBUGLOG2(gmnfile,_T("%ld / %ld / %ld"),denominator, numerator, bpm);
133 
134 
135  if ( numerator && denominator && bpm > 0 ) {
136  retval = (denominator * 60*1000*1000) / (numerator * bpm); // 1/1 = 1bpm => 60s per measure
137  }
138  }
139  DEBUGLOG2(gmnfile,_T("Returning fraction %s"), TowxString(retval).c_str());
140 
141  return retval;
142 }
#define ZIFFER
Definition: GIS_Head.cpp:88
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
wxString TowxString(const frac &f)
Definition: Frac.h:146
#define mutint64
Definition: Defs.h:70
#define mutString
Definition: Defs.h:84
#define mutT
Definition: Defs.h:77
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:833
Definition: GIS.h:126
BoxClass::tone_system mutabor::BoxClass::GetToneSystem ( )

Definiert in Zeile 586 der Datei Box.cpp.

Benutzt mutabor::BoxClass::tone_system::anchor, mutabor::hidden::TSYS::anker, mutabor::hidden::mutabor_box_type::file, mutabor::BoxClass::tone_entry::invalid, mutabor::hidden::mutabor_convert_interval_to_pitch(), mutabor::hidden::mutabor_convert_tone_to_pitch(), MUTABOR_INVALID_KEY, MUTABOR_KEYRANGE_MAX_WIDTH, MUTABOR_NO_KEY, mutASSERT, mutabor::BoxClass::mutex, mutabor::BoxClass::tone_system::period, mutabor::hidden::TSYS::periode, mutabor::hidden::TSYS::ton, mutabor::BoxClass::tone_system::tones und mutabor::hidden::mutabor_box_type::tonesystem.

586  {
587  ScopedLock lock(mutex);
588  tone_system retval;
589  if (!box) return retval;
590  struct mutabor_logic_parsed * file = box->file;
591  if (!file) return retval;
592  // no file means no logic (implying no current logic)
593 
594  hidden::tone_system * system = box->tonesystem;
595  if (!system)
596  return retval;
597  retval.anchor = system->anker;
598  retval.period =
599  mutabor_convert_interval_to_pitch(system->periode);
600  int width = system -> breite;
601  if (width <= 0)
602  return retval;
603  retval.tones.resize(width);
605  for (int i = 0 ; i < width; i++) {
606  mutabor_tone t = system->ton[i];
607  switch (t) {
608  case MUTABOR_NO_KEY:
609  break;
610  case MUTABOR_INVALID_KEY:
611  retval.tones[i].flag = tone_entry::invalid;
612  break;
613  default:
614  retval.tones[i] =
615  tone_entry(mutabor_convert_tone_to_pitch(t));
616  }
617  }
618  return retval;
619  }
#define MUTABOR_NO_KEY
Definition: Global.h:88
tone_system * tonesystem
tone system.
Definition: box.h:152
struct mutabor::hidden::TSYS tone_system
double mutabor_convert_tone_to_pitch(mutabor_tone tone)
Convert a tone to half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:115
wxMutexLocker ScopedLock
Definition: thread.h:57
#define MUTABOR_INVALID_KEY
Definition: Global.h:89
#define MUTABOR_KEYRANGE_MAX_WIDTH
Definition: Global.h:72
struct mutabor_box_type * box
Definition: Box.h:648
mutabor_interval mutabor_tone
Definition: Interpre.h:69
double mutabor_convert_interval_to_pitch(mutabor_interval interval)
Convert an interval to half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:88
struct mutabor_logic_parsed * file
Definition: box.h:180
#define mutASSERT
Definition: Defs.h:222
Mutex mutex
Definition: Box.h:672
virtual BoxType mutabor::BoxClass::GetType ( )
inlinevirtual

Definiert in Zeile 167 der Datei Box.h.

Benutzt mutabor::Box0 und mutabor::BoxClass::routefile_id.

Wird benutzt von mutabor::BoxClass::GetLabel() und mutabor::BoxClass::GetTypeName().

167  {
168  return routefile_id >= Box0 ? Box0 : (BoxType) routefile_id;
169  }
BoxType
Definition: Box.h:109
int routefile_id
Definition: Box.h:650
template<class I = InputDevice, class O = OutputDevice, class B = Box>
RouteType mutabor::TRouteClass< I, O, B >::GetType ( ) const
inline

Definiert in Zeile 331 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load(), mutabor::InputMidiFile::Load(), mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

331  {
332  return Type;
333  }
RouteType Type
Definition: Route.h:477
virtual size_t mutabor::BoxFactory::GetType ( )
inlineprotectedvirtual

Definiert in Zeile 776 der Datei Box.h.

Benutzt mutabor::Box0.

776 { return Box0; };
virtual DevType mutabor::OutputDeviceClass::GetType ( ) const
inlinevirtual

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort und mutabor::OutputGis.

Definiert in Zeile 897 der Datei Device.h.

Benutzt mutabor::DTUnknown.

897  {
898  return DTUnknown;
899  }
virtual DevType mutabor::InputDeviceClass::GetType ( ) const
inlinevirtual

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort und mutabor::InputGis.

Definiert in Zeile 1161 der Datei Device.h.

Benutzt mutabor::DTUnknown.

1162  {
1163  return DTUnknown;
1164  }
virtual size_t mutabor::DeviceFactory::GetType ( ) const
protectedpure virtual
virtual mutString mutabor::BoxClass::GetTypeName ( )
inlinevirtual

Definiert in Zeile 171 der Datei Box.h.

Benutzt _, mutabor::Box0, mutabor::BoxClass::GetType(), mutabor::GmnBox, mutabor::NewBox und mutabor::NoBox.

171  {
172  switch (GetType()) {
173  case NewBox:
174  return _("New box");
175  case NoBox:
176  return _("No box");
177  case GmnBox:
178  return _("GUIDO Music Notation box");
179  case Box0:
180  return _("Mutabor box");
181  }
182  return _("Unknown box type");
183  }
virtual BoxType GetType()
Definition: Box.h:167
#define _
Definition: Execute.cpp:57
template<class I = InputDevice, class O = OutputDevice, class B = Box>
const mutString& mutabor::TRouteClass< I, O, B >::GetTypeName ( )
inline

Definiert in Zeile 339 der Datei Route.h.

339  {
340  return RTName[Type];
341  }
RouteType Type
Definition: Route.h:477
const mutString RTName[]
Definition: Route.cpp:49
virtual mutString mutabor::Device::GetTypeName ( ) const
inlinevirtual

Erneute Implementation in mutabor::InputDeviceClass, mutabor::OutputDeviceClass, mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 598 der Datei Device.h.

Benutzt N_().

598  {
599  return N_("Device base class");
600  }
N_("Debug Execute.cpp")) DEBUGFLAG(kernel_tabgen
virtual mutString mutabor::OutputDeviceClass::GetTypeName ( ) const
inlinevirtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 901 der Datei Device.h.

Benutzt N_().

901  {
902  return N_("Undefined output device");
903  }
N_("Debug Execute.cpp")) DEBUGFLAG(kernel_tabgen
virtual mutString mutabor::InputDeviceClass::GetTypeName ( ) const
inlinevirtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis und mutabor::CommonFileInputDevice.

Definiert in Zeile 1166 der Datei Device.h.

Benutzt N_().

1166  {
1167  return N_("Undefined input device");
1168  }
N_("Debug Execute.cpp")) DEBUGFLAG(kernel_tabgen
template<class I , class O , class B >
void * mutabor::TRouteClass< I, O, B >::getUserData ( ) const
protectedvirtual

Definiert in Zeile 134 der Datei Route.cpp.

135  {
136  return userdata;
137  }
virtual void* mutabor::Device::getUserData ( ) const
inlineprotectedvirtual
void mutabor::OutputDeviceClass::Gis ( GisToken token,
char  turn 
)
inline

Definiert in Zeile 859 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Gis() und mutabor::OutputDeviceClass::write_lock.

859  {
860  ScopedLock lock(write_lock);
861  do_Gis(token,turn);
862  }
virtual void do_Gis(GisToken *token, char turn)=0
wxMutexLocker ScopedLock
Definition: thread.h:57
GisNote::GisNote ( int  key,
int  octave,
int  acc,
const mutString  sep = mutEmptyString,
GisToken next = 0 
)

Definiert in Zeile 351 der Datei GIS.cpp.

Benutzt GisNote::Accedentials, GisNote::Duration, GMN_NO_KEY, mutChar, mutEmptyString, mutT, octave, GisNote::Octave und strdupchr.

352  : GisToken(sep, next)
353 {
354  if ( key == GMN_NO_KEY ) {
355 #ifdef WX
356  Name = mutT("_");
357 #else
358  Name = strdup("_");
359 #endif
361  ;
362  Octave = 0;
363  } else {
364  mutChar Flats[] = mutT("cddeefggaabb");
365  mutChar FlatsA[] = mutT(" & & & & & ");
366  mutChar Sharps[] = mutT("ccddeffggaab");
367  mutChar SharpsA[] = mutT(" # # # # # ");
368  mutChar accs;
369  int Index = key % 12;
370  int Abstand = key /12;
371 
372  if ( Index < 0 ) {
373  Index += 12;
374  Abstand--;
375  }
376 
377  if ( acc < 0 ) {
378  Name = strdupchr(Flats[Index]);
379  accs = FlatsA[Index];
380  } else {
381  Name = strdupchr(Sharps[Index]);
382  accs = SharpsA[Index];
383  }
384 
385  if ( accs != mutT(' ') )
386  Accedentials = strdupchr(accs);
387  else
389 
390  Octave = Abstand - 5 - octave;
391  }
392 
393  Duration = 0;
394 }
#define GMN_NO_KEY
Definition: GIS.h:105
#define strdupchr(a)
Definition: GIS.cpp:339
static int octave
Definition: GSP.cpp:87
#define mutChar
Definition: Defs.h:83
mutString Name
Definition: GIS.h:461
GisToken(const mutString &sep=mutEmptyString, GisToken *next=0)
Definition: GIS.h:139
int Octave
Definition: GIS.h:463
#define mutT
Definition: Defs.h:77
frac Duration
Definition: GIS.h:464
mutString Accedentials
Definition: GIS.h:462
#define mutEmptyString
Definition: Defs.h:86
GisToken * GisParse ( const mutString  FileName)

Definiert in Zeile 891 der Datei GIS.cpp.

Benutzt DEBUGLOG2, GspParse(), mutEmptyString, Root, TagMode, TagName, TagSep und UnRavel().

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

892 {
893  Root = 0;
894  Current = &Root;
895  LastOpenBracket = 0;
896  LastOpenRange = 0;
897  TagMode = 0;
900  Para = 0;
901  LastPara = 0;
902  DEBUGLOG2(gmnfile,_T("TagName.len %d, '%s'"),(int)TagName.Len(),TagName.c_str());
903 
904  if ( GspParse(FileName) ) {
905  UnRavel();
906  delete Root;
907  Root = 0;
908  }
909 
910  return Root;
911 }
char TagMode
Definition: GIS.cpp:112
GisTagBegin * LastOpenRange
Definition: GIS.cpp:110
mutString TagSep
Definition: GIS.cpp:116
GisToken * Para
Definition: GIS.cpp:118
void UnRavel()
Definition: GIS.cpp:812
int GspParse(const mutString &FileName)
Definition: GSP.cpp:786
mutString TagName
Definition: GIS.cpp:114
GisToken * LastOpenBracket
Definition: GIS.cpp:108
GisToken * LastPara
Definition: GIS.cpp:118
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
GisToken * Root
Definition: GIS.cpp:106
#define mutEmptyString
Definition: Defs.h:86
wxString GISPrettyPrint ( wxString  s)

Definiert in Zeile 914 der Datei GIS.cpp.

915 {
916  wxString ret = wxEmptyString;
917  wxString pre = wxEmptyString;
918 
919  for (size_t start = 0, current = 0 ; current < s.Len(); current++) {
920  wxChar c = s[current];
921 
922  if (c == _T('{')) {
923  pre += _T(" ");
924  } else if (c == _T('}')) {
925  if (pre.Len() >= 2) pre = pre.Left(pre.Len()-2);
926  } else if (c == _T('\n')) {
927  ret += s (start, current - start + 1) + pre;
928  start = current + 1;
929  }
930  }
931 
932  return ret;
933 }
void GisReadArtDummy ( GisReadArtHead ,
char   
)

Definiert in Zeile 650 der Datei GIS_Head.cpp.

651 {
652  // just a dummy
653 }
frac GisReadArtHeadOn ( GisReadArtHead **  Head,
frac  dTime,
GisReadArtProceed proceed 
)

Definiert in Zeile 656 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), DEBUGLOG2, h, GisReadHead::Next, GisReadHead::nSub, GisReadArtHead::Read(), GisReadHead::Time, GisReadArtHead::Time2, TowxString(), TRACE und GisReadHead::Turn.

Wird benutzt von main().

657 {
658  TRACE;
659  frac MinTime = frac(-1, 1);
660 
661 beginloop:
662 
663  while ( *Head ) {
664  GisReadArtHead *h = *Head;
665 
666  if ( h->nSub > 0 ) // header has subs
667  {
668  Head = (GisReadArtHead**)&(h->Next);
669  continue;
670  }
671  if ( h->nSub == 0 ) // all subs has finished
672  {
673  proceed(h, h->Turn++); // end of segment or sequenz
674  h->CursorNext();
675  h->Time = 0;
676  }
677  if ( h->Time != frac(0, 1) ) // header in normal state
678  {
679  h->Time -= dTime;
680 
681  if ( h->Time <= frac(0, 1) )
682  {
683  proceed(h, h->Turn++);
684  DEBUGLOG2(gmnfile, _T("Turn:2; Moving time2 to time (old: %s, new: %s)"),TowxString(h->Time).c_str(), TowxString(h->Time2).c_str());
685 
686  if ( h->Turn == 2 ) {
687  h->Time = h->Time2;
688  h->Time2 = 0;
689  }
690 
691  if ( h->Turn > 2 )
692  h->CursorNext();
693  }
694  }
695 
696  h->nSub = -1; // normal header
697  // now check, wether count down Time is 0
698  // if h->time = 0 then h->Cursor points to the GisToken next to proceed
699 
700  while ( !(h->Time) ) // read next tokens
701  {
702 
703  if ( h->Turn)
704  {
705  proceed(h, h->Turn++);
706 
707  if ( h->Turn == 2 ) {
708  DEBUGLOG2(gmnfile, _T("Turn:2; Moving time2 to time (old: %s, new: %s)"),TowxString(h->Time).c_str(), TowxString(h->Time2).c_str());
709  h->Time = h->Time2;
710  h->Time2 = 0;
711  }
712 
713  if ( h->Turn > 2 )
714  h->CursorNext();
715  else
716  continue;
717  }
718 
719  if ( !h->Cursor ) // header finished, kick away
720  {
721  h->CutOut();
722 
723  if ( h->Boss ) h->Boss->nSub--; // inform the boss
724 
725  delete h;
726 
727  goto beginloop;
728  }
729  // proceed
730  proceed(h, 0);
731 
732  h->Read();
733 
734  if ( h->nSub != -1 ) goto beginloop;
735 
736  if ( !(h->Time) ) // token without duration
737  h->CursorNext();
738  }
739  // check MinTime
740  if ( MinTime == frac(-1,1) || h->Time < MinTime )
741  MinTime = h->Time;
742 
743  // next Header
744  Head = (GisReadArtHead**)&(h->Next);
745  }
746 
747  return MinTime;
748 }
GisToken * Cursor
Definition: GIS_Head.h:70
frac Time
Definition: GIS_Head.h:71
GisReadArtHead * h
Definition: mutgis.cpp:5
GisReadHead * Boss
Definition: GIS_Head.h:68
GisToken * CursorNext()
Definition: GIS_Head.h:106
GisReadHead * Next
Definition: GIS_Head.h:67
Definition: Frac.h:60
GisReadHead * CutOut()
Definition: GIS_Head.cpp:216
char Turn
Definition: GIS_Head.h:73
int nSub
Definition: GIS_Head.h:69
#define TRACE
Definition: mutDebug.h:150
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
wxString TowxString(const frac &f)
Definition: Frac.h:146
frac GisReadHeadOn ( GisReadHead **  Head,
frac  dTime,
GisReadProceed proceed 
)

Definiert in Zeile 371 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), h, GisReadHead::Next, GisReadHead::nSub, GisReadHead::Read() und GisReadHead::Time.

372 {
373  frac MinTime = frac(-1, 1);
374 
375 beginloop:
376 
377  while ( *Head ) {
378  GisReadHead *h = *Head;
379 
380  if ( h->nSub > 0 ) // header has subs
381  {
382  Head = &(h->Next);
383  continue;
384  }
385  if ( h->nSub == 0 ) // all subs has finished
386  {
387  proceed(h, 1);
388  h->CursorNext();
389  h->Time = 0;
390  }
391  if ( h->Time != frac(0, 1) ) // header in normal state
392  {
393  h->Time -= dTime;
394 
395  if ( h->Time <= frac(0, 1) )
396  {
397  proceed(h, 1);
398  h->CursorNext();
399  }
400  }
401 
402  h->nSub = -1; // normal header
403  // now check, wether count down Time is 0
404  // if h->time = 0 then h->Cursor points to the GisToken next to proceed
405 
406  while ( !(h->Time) ) // read next tokens
407  {
408 
409  if ( !h->Cursor ) // header finished, kick away
410  {
411  h->CutOut();
412 
413  if ( h->Boss ) h->Boss->nSub--; // inform the boss
414 
415  delete h;
416 
417  goto beginloop;
418  }
419  // proceed
420  proceed(h, 0);
421 
422  h->Read();
423 
424  if ( h->nSub != -1 ) goto beginloop;
425 
426  if ( !(h->Time) ) // token without duration
427  h->CursorNext();
428  }
429  // check MinTime
430  if ( MinTime == frac(-1,1) || h->Time < MinTime )
431  MinTime = h->Time;
432 
433  // next Header
434  Head = &(h->Next);
435  }
436 
437  return MinTime;
438 }
GisToken * Cursor
Definition: GIS_Head.h:70
frac Time
Definition: GIS_Head.h:71
GisReadArtHead * h
Definition: mutgis.cpp:5
GisReadHead * Boss
Definition: GIS_Head.h:68
GisToken * CursorNext()
Definition: GIS_Head.h:106
GisReadHead * Next
Definition: GIS_Head.h:67
Definition: Frac.h:60
GisReadHead * CutOut()
Definition: GIS_Head.cpp:216
void Read()
Definition: GIS_Head.cpp:319
int nSub
Definition: GIS_Head.h:69
int GisWriteHeadGis ( GisWriteHead **  head,
mutString  id,
GisToken token,
char  turn 
)

Definiert in Zeile 1506 der Datei GIS_Head.cpp.

Benutzt GetMatchingHeader() und GisWriteHead::ProceedGis().

Wird benutzt von mutabor::OutputGis::do_Gis().

1507 {
1508  return GetMatchingHeader(head, id)->ProceedGis(token, turn);
1509 }
GisWriteHead * GetMatchingHeader(GisWriteHead **head, const mutString id)
Definition: GIS_Head.cpp:1448
int ProceedGis(GisToken *token, char turn=0)
Definition: GIS_Head.cpp:1258
int GspParse ( const mutString FileName)

Definiert in Zeile 786 der Datei GSP.cpp.

Benutzt BracketDeep, Brackets, CHAR0, CheckError(), CloseFile(), CurrentLine, CurrentPos, DoError(), DoParse(), Eof, GetSep(), GspCurrentLineNr, GspError, GspErrorLine, GspErrorLineNr, GspErrorPos, LastTag, mutEmptyString, octave, OpenFile() und StartSep().

Wird benutzt von GisParse().

787 {
788  GspCurrentLineNr = 0;
789  CurrentPos = 0;
790  CurrentLine = _T("");
791 
792  GspErrorLineNr = 0;
793  GspErrorPos = 0;
795  GspError = 0;
796 
797  Eof = 0;
798 #ifdef WX
800 #else
801  BracketDeep = 0;
802 #endif
803  LastTag = 0;
804 
805  octave = 1;
806  duration = frac(1,4);
807 
808  if ( OpenFile(FileName) )
809  return DoError(30); // couldn't open file
810 
811  GetSep();
812 
813  if ( CheckError(StartSep()) )
814  return GspError;
815 
816 #ifdef GMN_STRICT
817  if ( !Eof && CHAR0 != '[' && CHAR0 != '{' )
818  DoError(40);
819 
820 #endif
821  if ( !GspError) DoParse();
822 
823  if ( CloseFile() )
824  return DoError(31); // couldn't close file
825 
826  return GspError;
827 }
int Eof
Definition: GSP_File.cpp:43
mutString GspErrorLine
Definition: GSP.cpp:50
int GspErrorPos
Definition: GSP.cpp:49
#define CHAR0
Definition: GSP.cpp:214
int GspError
Definition: GSP.cpp:51
int OpenFile(const mutString &Name)
Definition: GSP_File.cpp:62
Definition: Frac.h:60
int StartSep()
Definition: GIS.cpp:555
mutString CurrentLine
Definition: GSP_File.cpp:38
int CloseFile()
Definition: GSP_File.cpp:75
int DoParse()
Definition: GSP.cpp:612
static int octave
Definition: GSP.cpp:87
mutString Brackets
Definition: GSP.cpp:77
int CheckError(int nr)
Definition: GSP.cpp:186
size_t CurrentPos
Definition: GSP_File.cpp:42
#define BracketDeep
Definition: GSP.cpp:78
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:167
static frac duration
Definition: GSP.cpp:91
int GspCurrentLineNr
Definition: GSP.cpp:47
int GspErrorLineNr
Definition: GSP.cpp:48
char LastTag
Definition: GSP.cpp:84
int GetSep()
Definition: GSP.cpp:227
#define mutEmptyString
Definition: Defs.h:86
void mutabor::InClose ( )

Definiert in Zeile 740 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von mutabor::InputDeviceClass::BatchPlay(), main() und mutabor::BoxClass::StopAll().

741  {
742  TRACE;
743  const InputDeviceList& list = InputDeviceClass::GetDeviceList();
744  for (InputDeviceList::const_iterator In = list.begin();
745  In != list.end(); In++)
746  (*In)->Close();
747  TRACE;
748  }
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:970
#define TRACE
Definition: mutDebug.h:150
void mutabor::InitDeviceFactories ( )

Definiert in Zeile 673 der Datei Device.cpp.

Wird benutzt von main().

673  {
674  new BoxFactory;
675  new RouteFactory;
676  new MidiPortFactory;
677  new MidiFileFactory;
678  new GisFactory;
679  }
void mutabor::initialize_box_data ( )

Definiert in Zeile 1005 der Datei Box.cpp.

Benutzt mutabor::BoxClass::backend_callbacks und mutabor::hidden::mutabor_set_callbacks().

Wird benutzt von IMPLEMENT_APP().

1006  {
1007  mutabor_set_callbacks(& BoxClass::backend_callbacks);
1008  }
mutabor_callback_type * mutabor_set_callbacks(mutabor_callback_type *callbacks)
Set the callbacks for the mutabor backend.
Definition: Execute.cpp:120
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all input devices, starting from 0 and incrementing by 1

Definiert in Zeile 214 der Datei Route.cpp.

Benutzt mutabor::BoxClass::InitializeIds(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::InitializeIds() und mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::InitializeIds().

215  {
217  int i = 0;
218  for (typename routeListType::iterator r = routeList.begin();
219  r != routeList.end(); r++) {
220  (*r) -> routefile_id = i++;
221  }
224  }
static void InitializeIds()
Initialize the internal device identifiers.
Definition: Box.cpp:192
static void InitializeIds()
Initialize the internal device identifiers.
static routeListType routeList
Definition: Route.h:469
void mutabor::BoxClass::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all output devices, starting from 0 and incrementing by 1

Definiert in Zeile 192 der Datei Box.cpp.

Benutzt TRACET.

Wird benutzt von mutabor::TRouteClass< I, O, B >::InitializeIds().

193  {
194  TRACET(BoxClass);
195  size_t nr = 0;
196  for (typename listtype::iterator i = boxList.begin();
197  i != boxList.end();
198  i++) {
199  /* currently, the user provides the numeric ids, so we don't need to change them */
200  //(*i)->set_routefile_id(nr);
201  nr = (*i)->get_routefile_id();
202  routeListType & list = (*i)->routes;
203  for (routeListType::iterator j = list.begin();
204  j != list.end();
205  j++) {
206  //thistype * ptr = NULL;
207  (*j)->SetBoxId(nr);
208  }
209  // nr++;
210  }
211  return;
212 #if 0
213  for (typename listtype::iterator i = deviceList.begin();
214  i != deviceList.end();
215  i++) {
216  (*i)->set_routexfile_id(nr);
217  routeListType & list = (*i)->routes;
218  for (routeListType::iterator j = list.begin();
219  j != list.end();
220  j++) {
221  thistype * ptr = NULL;
222  (*j)->SetDeviceId(nr, ptr);
223  }
224  nr++;
225  }
226  TRACET(thistype);
227 #endif
228  }
static listtype boxList
Definition: Box.h:643
void SetBoxId(int Id)
Definition: Route.h:299
void SetDeviceId(int Id, I)
Definition: Route.h:292
#define TRACET(type)
Definition: mutDebug.h:152
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:544
BoxClass(int id=-1)
Definition: Box.cpp:777
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all output devices, starting from 0 and incrementing by 1

Definiert in Zeile 211 der Datei Device.cpp.

Benutzt TRACET.

212  {
213  TRACET(thistype);
214  size_t nr = 0;
215  for (typename listtype::iterator i = deviceList.begin();
216  i != deviceList.end();
217  i++) {
218  (*i)->set_routefile_id(nr);
219  routeListType & list = (*i)->routes;
220  for (routeListType::iterator j = list.begin();
221  j != list.end();
222  j++) {
223  thistype * ptr = NULL;
224  (*j)->SetDeviceId(nr, ptr);
225  }
226  nr++;
227  }
228  TRACET(thistype);
229  }
static listtype deviceList
Definition: Device.h:668
#define TRACET(type)
Definition: mutDebug.h:152
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:544
bool mutabor::InOpen ( )

Definiert in Zeile 720 der Datei Device.cpp.

Benutzt DEBUGLOGBASE, mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von main() und mutabor::OpenAll().

721  {
722  TRACE;
723  const InputDeviceList& list = InputDeviceClass::GetDeviceList();
724  for (InputDeviceList::const_iterator In = list.begin();
725  In != list.end(); In++)
726  if ( !(*In)->Open() ) {
727  for (InputDeviceList::const_iterator In1 = list.begin();
728  In1 != In; In1++)
729  (*In1)->Close();
730 
731  DEBUGLOGBASE(other,"",_T("Opening failed"));
732 
733  return false;
734  }
735 
736  TRACE;
737  return true;
738  }
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:970
#define TRACE
Definition: mutDebug.h:150
#define DEBUGLOGBASE(level, type,...)
Definition: mutDebug.h:125
mutabor::InputDeviceClass::InputDeviceClass ( const mutStringRef  name = mutEmptyString,
mutabor::MutaborModeType  m = DeviceStop,
int  id = -1 
)
inlineprotected

Definiert in Zeile 1247 der Datei Device.h.

Benutzt mutabor::Device::Mode.

1249  :
1250  CommonTypedDeviceAPI<InputDeviceClass>(name, id)
1251  {
1252  Mode = m;
1253  }
enum MutaborModeType Mode
Definition: Device.h:626
GisWriteHead * GisWriteHead::InsertAfter ( GisWriteHead position)

Definiert in Zeile 1003 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von GetMatchingHeader().

1004 {
1005  if ( !position ) {
1006  Next = 0;
1007  Prev = 0;
1008  return this;
1009  }
1010 
1011  if ( position->Next ) // not last position
1012  position->Next->Prev = this;
1013 
1014  Next = position->Next;
1015 
1016  Prev = position;
1017 
1018  position->Next = this;
1019 
1020  return this;
1021 }
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * Prev
Definition: GIS_Head.h:317
GisReadHead * GisReadHead::InsertInfrontOf ( GisReadHead position)

Definiert in Zeile 147 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG, mutASSERT, GisReadHead::Next, GisReadHead::Prev und GisReadHead::PrevPtr.

Wird benutzt von GisReadHead::GisReadHead().

148 {
149  DEBUGLOG (gmnfile, _T("pos = %p; this = %p"),(void*)position,(void*)this);
150 
151  if ( !position ) {
152  Next = NULL;
153  Prev = this;
154  return this;
155  }
156 
157 #if 0
158  // *(position->Prev) == position
159  if ( *(position->PrevPtr) == position ) { // first position
160  DEBUGLOG (gmnfile, _T("first position %p, Prev: %p, Next: %p, cmp: %p"),
161  position,
162  position->Prev,
163  position->Next,
164  *((position->PrevPtr))
165  );
166  *(position->PrevPtr) = this;
167  } else { // normal position in list
168  DEBUGLOG (gmnfile, _T("first position %p, Prev: %p, Next: %p, cmp: %p"),
169  position,
170  position->Prev,
171  position->Next,
172  *((GisReadHead**)(position->PrevPtr))
173  );
174  (*(position->PrevPtr))->Next = this;
175  }
176 
177  PrevPtr = position->PrevPtr;
178 
179  Next = position;
180  *(position->PrevPtr) = this;
181  return this;
182 #else
183  // *(position->Prev) == position
184 
185  if ( *(position->PrevPtr) == position ) { // first position
186  DEBUGLOG (gmnfile, _T("first position %p, Prev: %p, Next: %p, cmp: %p"),
187  (void*)position,
188  (void*)position->Prev,
189  (void*)position->Next,
190  (void*)*((position->PrevPtr))
191  );
192  *(position->PrevPtr) = this;
193  PrevPtr = position->PrevPtr;
194  position->PrevPtr = &(position->Prev);
195  } else { // normal position in list
196  DEBUGLOG (gmnfile, _T("first position %p, Prev: %p, Next: %p, cmp: %p"),
197  (void*)position,
198  (void*)position->Prev,
199  (void*)position->Next,
200  (void*)*((GisReadHead**)(position->PrevPtr))
201  );
202 
203  position->Prev->Next = this;
204  mutASSERT(position->PrevPtr == &(position->Prev));
205  }
206 
207  Prev = position->Prev;
208 
209  Next = position;
210  position->Prev = this;
211 
212  return this;
213 #endif
214 }
GisReadHead ** PrevPtr
Definition: GIS_Head.h:67
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
GisReadHead * Next
Definition: GIS_Head.h:67
GisReadHead * Prev
Definition: GIS_Head.h:67
#define mutASSERT
Definition: Defs.h:222
bool mutabor::ChannelData::is_changed_controller ( controller_vector::const_iterator  actual) const
inline

Definiert in Zeile 402 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed und mutASSERT.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange() und mutabor::CommonMidiOutput< T, D >::do_UpdateControllers().

402  {
403  mutASSERT(controller_changed.begin() <= actual);
404  mutASSERT(actual<= controller_changed.end());
405  if (actual == controller_changed.end()) return false;
406  if (*actual == -1) return false;
407  mutASSERT(0<= *actual);
408  mutASSERT((size_t)(*actual) < controller.size());
409  return true;
410  }
controller_vector controller
Definition: Device.h:460
controller_vector controller_changed
Definition: Device.h:461
#define mutASSERT
Definition: Defs.h:222
bool mutabor::ChannelData::is_compatible ( const ChannelData cd) const
inline

Definiert in Zeile 437 der Datei Device.h.

Benutzt mutabor::ChannelData::controller und mutabor::ChannelData::Sound.

437  {
438  /* \todo check that ignoring pitch bend is ok */
439  if (Sound != -1 && cd.Sound != -1
440  && Sound != cd.Sound) return false;
441  if (controller.size()
442  != cd.controller.size()) return false;
443 
444  /* \todo optimization */
445  for (size_t i = 0 ; i < std::min(controller.size(),cd.controller.size()) ; i++) {
446  if (controller[i] != -1
447  && cd.controller[i] != -1
448  && controller[i] != cd.controller[i]) return false;
449  }
450  return true;
451  }
controller_vector controller
Definition: Device.h:460
bool mutabor::InputDeviceClass::IsDelta ( mutint64  d)
inline

Definiert in Zeile 1174 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::GetNO_DELTA().

Wird benutzt von mutabor::InputGis::ReadOn() und mutabor::CommonFileInputDevice::ThreadPlay().

1174  {
1175  return d != GetNO_DELTA();
1176  }
static mutint64 GetNO_DELTA()
Definition: Device.h:1170
bool mutabor::Device::IsDirty ( ) const
inline

Definiert in Zeile 605 der Datei Device.h.

Benutzt mutabor::Device::dirty.

605 { return dirty; }
static bool mutabor::BoxClass::IsInBoxList ( const Box  b)
inlinestaticprotected

Definiert in Zeile 697 der Datei Box.h.

Benutzt mutabor::BoxClass::boxList und mutabor::BoxClass::FindInBoxList().

697  {
698  return FindInBoxList(b) != boxList.end();
699  }
static listtype boxList
Definition: Box.h:643
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:690
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static bool mutabor::CommonTypedDeviceAPI< T, P, L >::IsInDeviceList ( const DevicePtr  dev)
inlinestaticprotected

Definiert in Zeile 796 der Datei Device.h.

796  {
797  return FindInDeviceList(dev) != deviceList.end();
798  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:789
static listtype deviceList
Definition: Device.h:668
int IsLetter ( mutChar  c)
inline

Definiert in Zeile 120 der Datei GSP.cpp.

Benutzt mutT.

Wird benutzt von DoParse(), ReadNote() und ReadTag().

122 {
123  return ((mutT('a') <= c) && (c <= mutT('z'))) ||
124  ((mutT('A') <= c) && (c <= mutT('Z'))) ||
125  ( c == mutT('_') );
126 }
#define mutT
Definition: Defs.h:77
bool mutabor::BoxClass::IsLogicKey ( int  key)

Definiert in Zeile 750 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_box_type::current_logic, mutabor::hidden::mutabor_box_type::file, mutabor::hidden::mutabor_logic_parsed::global_keystrokes, mutabor::is_logic_key() und mutabor::hidden::logik::keystroke_list.

750  {
752  return true;
754  }
static bool is_logic_key(struct keyboard_ereignis *e, int key)
Definition: Box.cpp:741
struct keyboard_ereignis * keystroke_list
Definition: Global.h:439
struct mutabor_box_type * box
Definition: Box.h:648
struct logik * current_logic
Definition: box.h:156
struct keyboard_ereignis * global_keystrokes
Definition: Parser.h:141
struct mutabor_logic_parsed * file
Definition: box.h:180
bool mutabor::BoxClass::IsNormal ( )
inline

Definiert in Zeile 200 der Datei Box.h.

Benutzt mutabor::Box0 und mutabor::BoxClass::routefile_id.

200  {
201  return routefile_id >= Box0;
202  }
int routefile_id
Definition: Box.h:650
bool mutabor::BoxClass::IsOpen ( )
inline

Definiert in Zeile 352 der Datei Box.h.

Benutzt mutabor::BoxClass::open.

Wird benutzt von mutabor::BoxClass::Destroy().

352 { return open; }
bool mutabor::Device::IsOpen ( ) const
inline
void mutabor::BoxClass::KeyboardAnalysis ( int  key,
KeyboardFlags  flags 
)
inline

Execute the action associated with a key that is pressed on the computer keyboard.

Parameter
keyKey that has been pressed.
flagsFlags which type of action should be taken.

Definiert in Zeile 507 der Datei Box.h.

Benutzt mutabor::BoxClass::box, mutabor::hidden::KeyboardAnalyse(), mutabor::hidden::KeyboardAnalyseSimple(), mutabor::BoxClass::KeyboardAny, mutabor::BoxClass::KeyboardLogic und mutabor::BoxClass::KeyboardNoLogic.

507  {
508  BoxLock lock(this);
509  switch (flags) {
510  case KeyboardNoLogic:
511  case KeyboardLogic:
513  break;
514  case KeyboardAny:
516  break;
517  }
518  }
void KeyboardAnalyse(mutabor_box_type *box, int taste, char isLogic)
Definition: Execute.cpp:1121
void KeyboardAnalyseSimple(mutabor_box_type *box, int taste)
Definition: Execute.cpp:1126
struct mutabor_box_type * box
Definition: Box.h:648
void mutabor::BoxClass::KeyboardAnalysis ( const mutStringRef  keys)
inline

Execute the actions that are associated with the characters of a string.

Zu beachten
: The character “&” denotes that the following character will not be a logic.
Parameter
keys

Definiert in Zeile 528 der Datei Box.h.

Benutzt mutabor::BoxClass::box und mutabor::hidden::KeyboardIn().

528  {
529  BoxLock lock(this);
530  hidden::KeyboardIn(box,keys.ToUTF8());
531  }
struct mutabor_box_type * box
Definition: Box.h:648
void KeyboardIn(mutabor_box_type *box, const char *keys)
Definition: Execute.cpp:972
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Load ( tree_storage config)
virtual

Read the route into from a tree based configuration.

config (tree_storage &) configuration where the route settings will be read from

Definiert in Zeile 88 der Datei Route.cpp.

Benutzt mutabor::connect(), mutabor::BoxClass::GetOrCreateBox(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::NoBox und mutabor::tree_storage::Read().

89  {
90 #ifdef DEBUG
91  wxString oldpath = config.GetPath();
92 #endif
93  connect(this,BoxClass::GetOrCreateBox(config.Read(_T("Box"),NoBox)));
94  Active = config.Read(_T("Active"),true);
95  if (In)
96  In->Load(config,this);
97  if (Out)
98  Out->Load(config,this);
99  mutASSERT(oldpath == config.GetPath());
100  }
InputDevice In
Definition: Route.h:461
static Box GetOrCreateBox(int id)
Return the box that is associated with the corrent id.
Definition: Box.h:814
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
#define mutASSERT
Definition: Defs.h:222
OutputDevice Out
Definition: Route.h:460
void mutabor::BoxClass::Load ( tree_storage config)
virtual

Load current device settings from a tree storage.

config (tree_storage) storage class, where the data will be loaded from.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 119 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::Load().

119  {
120  }
void mutabor::BoxClass::Load ( tree_storage config,
RouteClass route 
)
virtual

Load route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function loads them from a tree storage. config (tree_storage *) Storage class, where the data will be restored from. route (Route) Route whos data shall be loaded.

Definiert in Zeile 122 der Datei Box.cpp.

123  {
124  }
virtual void mutabor::Device::Load ( tree_storage config)
pure virtual

Load current device settings from a tree storage.

config (tree_storage) storage class, where the data will be loaded from.

Implementiert in mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::CommonFileInputDevice, midicmnInputDevice, mutabor::OutputGis, mutabor::CommonFileOutputDevice und midicmnOutputDevice.

virtual void mutabor::Device::Load ( tree_storage config,
RouteClass route 
)
pure virtual

Load route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function loads them from a tree storage. config (tree_storage *) Storage class, where the data will be restored from. route (Route) Route whos data shall be loaded.

Implementiert in mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, midicmnInputDevice, testCommonFileDeviceTimer, testCommonFileDeviceTimer, mutabor::OutputGis und midicmnOutputDevice.

void mutabor::BoxFactory::LoadBoxes ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 913 der Datei Box.cpp.

Benutzt mutabor::BoxFactory::Create(), DEBUGLOGTYPE, mutabor::tree_storage::GetPath(), mutASSERT, mutabor::NoBox, mutabor::tree_storage::Read(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

914  {
915 #ifdef DEBUG
916  wxString oldpath = config.GetPath();
917 #endif
918  config.toLeaf(_T("Boxes"));
919 
920  int i = config.toFirstLeaf(_T("Box"));
921  while (i != wxNOT_FOUND) {
922  DEBUGLOGTYPE(config,BoxClass,_T("Loading box device with id %d"),i);
923  int type = config.Read(_T("Type"), NoBox);
924  Box b = BoxFactory::Create(type);
925  if (!b) continue;
926  b -> set_routefile_id(i);
927  b -> Load(config);
928  i = config.toNextLeaf(_T("Box"));
929  }
930 
931  config.toParent(2);
932  mutASSERT(oldpath == config.GetPath());
933  }
#define DEBUGLOGTYPE(level, type,...)
Definition: mutDebug.h:148
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
#define mutASSERT
Definition: Defs.h:222
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
void mutabor::DeviceFactory::LoadInputDevices ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 595 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::CreateInput(), DEBUGLOGTYPE, mutabor::DTMidiPort, mutabor::tree_storage::GetPath(), mutASSERT, mutChar, mutabor::tree_storage::Read(), mutabor::Device::set_routefile_id(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf(), mutabor::tree_storage::toParent() und TRACE.

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

596  {
597 #ifdef DEBUG
598  wxString oldpath = config.GetPath();
599 #endif
600  config.toLeaf(_T("InputDevices"));
601 
602  int i = config.toFirstLeaf(_T("Device"));
603  while (i != wxNOT_FOUND) {
604  DevType type = (DevType) config.Read(_T("Type"), DTMidiPort);
605  TRACE;
606  InputDevice in = CreateInput(type);
607  TRACE;
608  in -> Device::set_routefile_id(i);
609 #ifdef DEBUG
610  wxString name = config.Read(_T("Type Name"),
611  _T("Midi input device"));
612  DEBUGLOGTYPE(config,
613  InputDeviceClass,
614  _T("device type name '%s' == '%s'?"),
615  (const mutChar *)name,
616  (const mutChar *)(in->GetTypeName()));
617  mutASSERT(name == in -> GetTypeName());
618 #endif
619  in -> Load(config);
620  TRACE;
621  i = config.toNextLeaf(_T("Device"));
622  }
623 
624  config.toParent(2);
625  mutASSERT(oldpath == config.GetPath());
626  }
DevType
Definition: Device.h:89
#define DEBUGLOGTYPE(level, type,...)
Definition: mutDebug.h:148
void set_routefile_id(int id)
Definition: Device.h:645
#define mutChar
Definition: Defs.h:83
static InputDevice CreateInput(int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1296
#define TRACE
Definition: mutDebug.h:150
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
#define mutASSERT
Definition: Defs.h:222
void mutabor::DeviceFactory::LoadOutputDevices ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 542 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::CreateOutput(), DEBUGLOGTYPE, mutabor::DTMidiPort, mutabor::tree_storage::GetPath(), mutASSERT, mutChar, mutabor::tree_storage::Read(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

543  {
544 #ifdef DEBUG
545  wxString oldpath = config.GetPath();
546 #endif
547  config.toLeaf(_T("OutputDevices"));
548 
549  int i = config.toFirstLeaf(_T("Device"));
550  while (i != wxNOT_FOUND) {
551  DEBUGLOGTYPE(config,OutputDeviceClass,_T("Loading output device with id %d"),i);
552  DevType type = (DevType) config.Read(_T("Type"), DTMidiPort);
554  if (!out) continue;
555  out -> set_routefile_id(i);
556  wxString name = config.Read(_T("Type Name"),
557  _T("Midi output device"));
558  DEBUGLOGTYPE(config,
559  OutputDeviceClass,
560  _T("device type name '%s' == '%s'?"),
561  (const mutChar *)name,
562  (const mutChar *)(out->GetTypeName()));
563  mutASSERT(name == out->GetTypeName());
564  out -> Load(config);
565  i = config.toNextLeaf(_T("Device"));
566  }
567 
568  config.toParent(2);
569  mutASSERT(oldpath == config.GetPath());
570  }
DevType
Definition: Device.h:89
#define DEBUGLOGTYPE(level, type,...)
Definition: mutDebug.h:148
#define mutChar
Definition: Defs.h:83
static OutputDevice CreateOutput(int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1279
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:809
#define mutASSERT
Definition: Defs.h:222
void compat30::LoadRoutes ( const mutStringRef  )

load the routes from a text string

Parameter
configstring to be read from

Definiert in Zeile 124 der Datei RouteCompat.cpp.

Benutzt mutabor::BoxClass::ClearBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::ClearDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::ClearDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::ClearRouteList(), mutabor::RouteFactory::Create(), mutabor::DeviceFactory::CreateInput(), mutabor::DeviceFactory::CreateOutput(), DEBUGLOG2, mutabor::DTGis, mutabor::DTMidiFile, mutabor::DTMidiPort, mutabor::DTNotSet, mutabor::DTUnknown, mutabor::hidden::error, GETLINE, mutabor::BoxClass::GetOrCreateBox(), compat30::GetOut(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::InitializeIds(), mutChar, mutString, SSCANF, compat30::Str2DT(), compat30::Str2RT(), STUB, TRACE und UNREACHABLE.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad().

125  {
126  bool error = false;
127 
128  TRACE;
129 
130  // empty lists
131  TRACE;
132  InputDeviceClass::ClearDeviceList();
133  TRACE;
134  OutputDeviceClass::ClearDeviceList();
135  TRACE;
136  RouteClass::ClearRouteList();
137  TRACE;
138  BoxClass::ClearBoxList();
139  TRACE;
140 
141  // Zerlegen von config
142  wxString s;
143  size_t i = 0;
144  GETLINE;
145 
146  DEBUGLOG2(routing,_T("+%s"),s.c_str());
147 
148  while ( !s.StartsWith(_T("OUTPUT")) ) {
149  GETLINE;
150  DEBUGLOG2(other,_T("+%s"),s.c_str());
151  }
152 
153  GETLINE;
154  DEBUGLOG2(routing,_T("+%s"),s.c_str());
155  // Output lesen
156  while ( !s.StartsWith(_T("INPUT")) ) {
157  mutChar Type[80], Name[400];
158  int DevId, BendingRange;
159 
160  DEBUGLOG2(routing,_T("a%s"),s.c_str());
161 #if (wxUSE_UNICODE || wxUSE_WCHAR_T)
162  int test = SSCANF(s.c_str(), _T("%s \"%[^\"]\" %d %d"),
163  Type, Name, &DevId, &BendingRange);
164  if ( test < 2 )
165  test = SSCANF(s.c_str(), _T("%s %s %d %d"),
166  Type, Name, &DevId, &BendingRange);
167 
168  if ( test < 3 ) {
169  error = true;
170  }
171 #else
172  int test = SSCANF(s.c_str(), _T("%s \"%[^\"]\" %d %d"),
173  Type, Name, &DevId, &BendingRange);
174  if ( test < 2 )
175  test = SSCANF(s.c_str(), _T("%s %s %d %d"),
176  Type, Name, &DevId, &BendingRange);
177  if ( test < 3 ) {
178  error = true;
179  }
180 #endif
181  DEBUGLOG2(routing,_T("%d parameters read: Type = '%s', Name = '%s', devid = %d, bendingrange = %d"),test,Type,Name,DevId,BendingRange);
182  DEBUGLOG2(routing,_T("Name = '%s'"),(wxString(Name).c_str()));
183  OutputDevice Out =
184  DeviceFactory::CreateOutput(Str2DT(Type),
185  Name);
186 
187  switch (Str2DT(Type)) {
188  case DTMidiPort:
189  if (test < 4)
190  error = true;
191  else {
192  OutputMidiPort * dev =
193  dynamic_cast<OutputMidiPort *>(Out.get());
194  if (!dev)
195  UNREACHABLE;
196  else {
197  dev -> SetDevId(DevId);
198  dev -> SetBendingRange (BendingRange);
199  }
200  }
201  break;
202  case DTMidiFile:
203  if (test < 4)
204  error = true;
205  else {
206  OutputMidiFile * dev =
207  dynamic_cast<OutputMidiFile *>(Out.get());
208  if (!dev)
209  UNREACHABLE;
210  else
211  dev -> SetBendingRange (BendingRange);
212  }
213  break;
214  case DTUnknown:
215  case DTGis:
216  default:
217  if (test >= 4) error = true;
218  }
219 
220  GETLINE;
221  DEBUGLOG2(other,_T("+%s"),s.c_str());
222  }
223 
224  OutputDeviceClass::InitializeIds();
225 
226  GETLINE;
227  DEBUGLOG2(routing,_T("+%s"),s.c_str());
228  // Input lesen
229 
230  while ( 1 ) {
231  // Device lesen
232  mutChar Type[40], Name[400];
233  //wxString Type, Name;
234  int DevId = -1;
235 #if (wxUSE_UNICODE || wxUSE_WCHAR_T)
236  int test = SSCANF(s, _T("%s \"%[^\"]\" %d"),
237  Type, Name, &DevId);
238  if ( test < 2 )
239  test = SSCANF(s, _T("%s %s %d"),
240  Type, Name, &DevId);
241  if ( test < 3 ) {
242  error = 1;
243  }
244 
245 #else
246  int test = SSCANF(s, _T("%s \"%[^\"]\" %d"),
247  Type, Name, &DevId);
248  if ( test < 2 )
249  test = SSCANF(s, _T("%s %s %d"),
250  Type, Name, &DevId);
251 
252  if ( test < 3 ) {
253  error = 1;
254  }
255 
256 #endif
257  DEBUGLOG2(routing,_T("%d input parameters read: Type = '%s', Name = '%s', DevId = %d"), test, Type, Name, DevId);
258  InputDevice In =
259  DeviceFactory::CreateInput(Str2DT(Type),
260  (mutString)Name);
261 
262  switch (Str2DT(Type)) {
263  case DTMidiPort:
264  static_cast<InputMidiPort *>(In.get()) -> SetDevId(DevId);
265  case DTNotSet:
266  case DTUnknown:
267  case DTMidiFile:
268  case DTGis:
269  default:
270  /* do nothing, here */
271  ;
272  }
273  GETLINE;
274  DEBUGLOG2(routing,_T("+%s"),s.c_str());
275 
276  // Routen lesen
277  while ( Str2DT(s) == DTUnknown ) {
278  // Route lesen
279  mutChar Type[40];
280  int IFrom = 0, ITo = 0, boxid = 0, BoxActive = 0,
281  OutDev = -1, OFrom = -1, OTo = -1, ONoDrum = 1;
282 #if (wxUSE_UNICODE || wxUSE_WCHAR_T)
283  test = SSCANF(s.c_str(),
284  _T("%s %d %d %d %d %d %d %d %d"),
285  Type, &IFrom, &ITo, &boxid, &BoxActive,
286  &OutDev, &OFrom, &OTo, &ONoDrum);
287 
288  if ( test < 9 ) {
289  error = true;
290  }
291 
292 #else
293  test = SSCANF(s.c_str(),
294  _T("%s %d %d %d %d %d %d %d %d"),
295  Type, &IFrom, &ITo, &boxid,
296  &BoxActive, &OutDev, &OFrom, &OTo,
297  &ONoDrum);
298 
299  if ( test < 9 ) {
300  error = true;
301  }
302 
303 #endif
304  DEBUGLOG2(routing,_T("%d parameters read: Type = '%s', IFrom = %d, ITo = %d"),test, Type, IFrom, ITo);
305  DEBUGLOG2(routing,_T(" boxid = %d, BoxActive= %d, OutDev = %d, OFrom = %d, OTo = %d, ONoDrum = %d"), boxid, BoxActive, OutDev, OFrom, OTo, ONoDrum);
306 
307  OutputDevice Out = GetOut(OutDev);
308  Box box = BoxClass::GetOrCreateBox(boxid);
309  Route r(RouteFactory::Create(In, Out,
310  Str2RT(Type),
311  IFrom, ITo, box,
312  BoxActive,
313  OFrom, OTo, ONoDrum != 0));
314  In->Add(r);
315  GETLINE;
316  DEBUGLOG2(routing,_T("+%s"),s.c_str());
317  }
318  }
319  if (error) {
320  STUB;
321  }
322  return;
323  }
#define GETLINE
Definition: RouteCompat.cpp:46
#define UNREACHABLE
Definition: mhDefs.h:146
#define STUB
functions or code that has to be written – simple function
Definition: mhDefs.h:140
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
static DevType Str2DT(const mutStringRef type)
Definition: RouteCompat.cpp:79
#define mutChar
Definition: Defs.h:83
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:542
#define SSCANF
Definition: mhDefs.h:62
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:809
static RouteType Str2RT(mutChar *type)
parse a string representation of a route type
Definition: RouteCompat.cpp:62
#define TRACE
Definition: mutDebug.h:150
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define mutString
Definition: Defs.h:84
static OutputDevice GetOut(int nr)
Definition: RouteCompat.cpp:48
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::LoadRoutes ( tree_storage config)
static

Load the current routes from a tree storage.

This function loads all routs from a tree based storage. config (tree_storage *) storage driver to use for saving.

Definiert in Zeile 247 der Datei Route.cpp.

Benutzt mutabor::RouteFactory::Create(), DEBUGLOGTYPE, mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDevice(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDevice(), mutabor::tree_storage::GetPath(), mutabor::Device::IDTypeFile, intrusive_ptr_get_refcount(), mutASSERT, mutabor::tree_storage::Read(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf(), mutabor::tree_storage::toParent() und TRACET.

248  {
249 #ifdef DEBUG
250  wxString oldpath = config.GetPath();
251 #endif
252  config.toLeaf(_T("Routes"));
253 
254  int i = config.toFirstLeaf(_T("Route"));
255  while (i != wxNOT_FOUND) {
256  DEBUGLOGTYPE(config,Route,_T("Loading route with id %d."), i);
257  // \todo replace -1 by a correct default
258  int inputid = config.Read(_T("Input Device"), -1);
259  int outputid = config.Read(_T("Output Device"), -1);
260  TRACET(thistype);
262  TRACET(thistype);
264  TRACET(thistype);
265  Route route = RouteFactory::Create(in,out);
266  TRACET(thistype);
267  if (route)
268  route -> Load(config);
269  DEBUGLOGTYPE(smartptr,thistype,
270  _T("route is %p (%d)"),
271  (void*)route.get(),
272  (int)intrusive_ptr_get_refcount(route.get()));
273  i = config.toNextLeaf(_T("Route"));
274  }
275 
276  config.toParent(2);
277  mutASSERT(oldpath == config.GetPath());
278  }
#define DEBUGLOGTYPE(level, type,...)
Definition: mutDebug.h:148
static DevicePtr GetDevice(int id, devidtype kind)
Scan the list of input devices for a given id.
#define TRACET(type)
Definition: mutDebug.h:152
#define mutASSERT
Definition: Defs.h:222
virtual void Load(tree_storage &config)
Read the route into from a tree based configuration.
Definition: Route.cpp:88
TRouteClass thistype
Definition: Route.h:111
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:117
static Route Create()
Creates a generic route.
Definition: Route.h:592
static void mutabor::RouteFactory::LoadRoutes ( tree_storage config)
inlinestatic

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 653 der Datei Route.h.

Benutzt mutabor::RouteFactory::DoLoadRoutes() und mutabor::RouteFactory::factory.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad() und LoadRoutes().

653  {
654  if (factory)
655  factory->DoLoadRoutes(config);
656  else
657  boost::throw_exception( RouteFactoryNotSet());
658 // UNREACHABLECT(RouteFactory);
659  }
virtual void DoLoadRoutes(tree_storage &config) const
load the routes from a tree based configuration
Definition: Route.cpp:559
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:740
static void mutabor::BoxClass::log_action ( mutabor_box_type box,
const char *  action 
)
static
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::MidiAnalysis ( const std::vector< unsigned char > *  midiCode)
inline

Definiert in Zeile 207 der Datei Route.h.

207  {
208 #if 0
209  static const int midilength[8] = {
211  3, 3, 3, 3, 2, 2, 3, 1
212  };
213 #endif
214 
215  if (!(box && box->IsNormal() && Active )) return;
216  if (!(midiCode->at(0) & 0x80)) {
217  UNREACHABLEC;
218  return;
219  }
220 #if 0
221  int len = midilength[(midiCode->at(0) & 0x70) >> 4];
222  for (int i = 0; i < len; i++) {
223  if (box)
224  box->MidiAnalysis(midiCode & 0xff);
225  midiCode >>= 8;
226  }
227 #endif
228  if (box) box->MidiAnalysis(midiCode);
229  }
#define UNREACHABLEC
Definition: mhDefs.h:148
void mutabor::BoxClass::MidiAnalysis ( const std::vector< unsigned char > *  midiCode)
inline

Definiert in Zeile 454 der Datei Box.h.

Benutzt mutabor::BoxClass::box und mutabor::hidden::MidiAnalysis().

454  {
455  BoxLock lock(this);
456  for (size_t i = 0 ; i < midiCode->size(); i++)
457  hidden::MidiAnalysis(box, midiCode->at(i));
458  }
struct mutabor_box_type * box
Definition: Box.h:648
void MidiAnalysis(mutabor_box_type *box, BYTE midiByte)
Definition: Execute.cpp:1027
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::MidiOut ( midi_string data)
inline

Definiert in Zeile 231 der Datei Route.h.

231  {
232  if (Out)
233  Out->MidiOut(box,data);
234  }
OutputDevice Out
Definition: Route.h:460
void mutabor::BoxClass::MidiOut ( struct midiliste outliste)

Definiert in Zeile 702 der Datei Box.cpp.

Benutzt mutabor::hidden::midiliste::midi_code, mutabor::hidden::midi_list_laenge() und mutabor::BoxClass::routes.

Wird benutzt von mutabor::BoxClass::MidiOutCallback().

702  {
703  size_t laenge = midi_list_laenge(outliste);
704  midi_string data(laenge);
705  struct midiliste * cursor = outliste;
706  uint8_t * bcursor = data.data();
707  while (cursor != NULL) {
708  (*bcursor++) = (uint8_t) cursor->midi_code;
709  cursor = cursor -> next;
710  }
711 
712  for (routeListType::const_iterator R = routes.begin();
713  R != routes.end(); R++) {
714  (*R) -> MidiOut(data);
715  }
716  }
void MidiOut(struct midiliste *outliste)
Definition: Box.cpp:702
int midi_list_laenge(const struct midiliste *list)
Definition: Parser.cpp:121
std::vector< uint8_t > midi_string
Definition: Device.h:73
routeListType routes
Definition: Box.h:651
void mutabor::OutputDeviceClass::MidiOut ( mutabor::Box  box,
midi_string  data 
)
inline

Definiert in Zeile 867 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_MidiOut() und mutabor::OutputDeviceClass::write_lock.

867  {
868  ScopedLock lock(write_lock);
869  do_MidiOut(box,data);
870  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_MidiOut(mutabor::Box box, midi_string data)=0
void mutabor::OutputDeviceClass::MidiOut ( BYTE p,
size_t  n 
)
inline

Definiert in Zeile 871 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_MidiOut() und mutabor::OutputDeviceClass::write_lock.

871  {
872  ScopedLock lock(write_lock);
873  do_MidiOut(p,n);
874  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_MidiOut(mutabor::Box box, midi_string data)=0
void mutabor::BoxClass::MidiOutCallback ( struct mutabor::hidden::mutabor_box_type b,
struct mutabor::hidden::midiliste outliste 
)
static

Definiert in Zeile 841 der Datei Box.cpp.

Benutzt mutabor::BoxClass::MidiOut().

842  {
843  BoxClass * box =
844  reinterpret_cast<BoxClass *>(b -> userdata);
845  if (!box) return;
846  box->MidiOut(outliste);
847  }
struct mutabor_box_type * box
Definition: Box.h:648
BoxClass(int id=-1)
Definition: Box.cpp:777
void mutabor::ChannelData::MidiReset ( )

Reset the controllers according to the MIDI standard.

This function resets the Midi Controllers according to RP15 from the MMA.

Siehe auch
http://www.midi.org/techspecs/rp15.php

Definiert in Zeile 48 der Datei Device.cpp.

Benutzt mutabor::ChannelData::bend, mutabor::ChannelData::controller, mutabor::midi::get_default_controller_value() und mutabor::ChannelData::set_controller().

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Controller().

48  {
49  /* RP 15 spec is availlable at http://www.midi.org/techspecs/rp15.php */
50  controller_vector::iterator start = controller.begin();
51  for (controller_vector::iterator i = start;
52  i != controller.end();
53  ++i) {
54  int value = *i;
55  if (value < 0)
56  continue;
57  int ctrl = i-start;
58  int newvalue = midi::get_default_controller_value(ctrl);
59  if (newvalue >= 0) {
60  set_controller(ctrl,newvalue);
61  }
62  }
63  // we do not send the reset controllers message so we
64  // may not forget the changed controllers
65 
66  // first_unchanged = 0;
67  // looped = false;
68 
69  // program change should not be reset
70  // Sound = -1;
71 
72  // bank should not be reset
73  // bank_coarse = -1;
74  //bank_fine = -1;
75 
76  bend = 0;
77 
78  // todo:
79  // channel pressure = 0
80  // polyphonic pressure = 0 for all notes
81  }
int get_default_controller_value(int ctrl)
Definition: MidiKern.h:412
controller_vector controller
Definition: Device.h:460
int set_controller(size_t number, int8_t data)
Definition: Device.h:153
int mutabor::BoxClass::MoveInList ( int  count)
virtual

Move the box in the box list.

Parameter
countNumber of places the box should be moved up. Negative values indicate downwards direction.
Rückgabe
new position in the box list.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 255 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::MoveInList().

255  {
256  if (!count) return -1;
257  typename listtype::iterator pos = FindInBoxList(Box(this));
258 
259  if (pos == boxList.end()) return -1;
260  int current_pos = pos - boxList.begin();
261  typename listtype::iterator newpos;
262  if (current_pos + count <= 0) {
263  newpos = boxList.begin();
264  count = -1;
265  } else if ((size_t)(current_pos + count) >= boxList.size()) {
266  newpos = boxList.end() - 1;
267  count = 1;
268  } else {
269  newpos = pos + count;
270  }
271 
272  if (count > 0)
273  std::rotate (pos, newpos, newpos + 1);
274  else
275  std::rotate (newpos, pos, pos + 1);
276  return newpos - boxList.begin();
277 
278  }
static listtype boxList
Definition: Box.h:643
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:690
template<class T , class P , class L >
int mutabor::CommonTypedDeviceAPI< T, P, L >::MoveInList ( int  count)
virtual

Move the device in the device list.

Parameter
countNumber of places the device should be moved up. Negative values indicate downwards direction.
Rückgabe
new position in the device list.

Definiert in Zeile 260 der Datei Device.cpp.

260  {
261  if (!count) return -1;
262  thistype * dev = static_cast <thistype *> (this);
263  typename listtype::iterator pos = FindInDeviceList(DevicePtr(dev));
264 
265  if (pos == deviceList.end()) return -1;
266  int current_pos = pos - deviceList.begin();
267  typename listtype::iterator newpos;
268  if (current_pos + count <= 0) {
269  newpos = deviceList.begin();
270  count = -1;
271  } else if (current_pos + count >= deviceList.size()) {
272  newpos = deviceList.end() - 1;
273  count = 1;
274  } else {
275  newpos = pos + count;
276  }
277  if (newpos == deviceList.end()) --newpos;
278  if (count > 0)
279  std::rotate (pos, newpos, newpos + 1);
280  else
281  std::rotate (newpos, pos, pos + 1);
282  return newpos - deviceList.begin();
283 
284  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:789
static listtype deviceList
Definition: Device.h:668
bool mutabor::BoxClass::MoveRoutes ( Box newclass)
virtual

Move routes to another device.

Definiert in Zeile 172 der Datei Box.cpp.

Benutzt mutaborGUI::IsOpen(), mutabor::reconnect(), TRACEC und UNREACHABLEC.

172  {
173  TRACEC;
174  if (!newclass->routes.empty()) {
175  UNREACHABLEC;
176  return false;
177  }
178  bool open = IsOpen();
179  // Flawfinder: ignore
180  if (open) {
181  if (!newclass->IsOpen()) newclass->Open();
182  }
183  Box thisptr(this);
184  routeListType::iterator i;
185  while ((i = routes.begin()) != routes.end()) {
186  reconnect(*i, thisptr, newclass);
187  }
188  TRACEC;
189  return true;
190  }
bool IsOpen()
Definition: Box.h:352
#define TRACEC
Definition: mutDebug.h:151
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
bool reconnect(Route r, OutputDevice oldout, OutputDevice newout)
#define UNREACHABLEC
Definition: mhDefs.h:148
routeListType routes
Definition: Box.h:651
template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::MoveRoutes ( DevicePtr newclass)
virtual

Move routes to another device.

Definiert in Zeile 190 der Datei Device.cpp.

Benutzt mutaborGUI::IsOpen(), mutabor::reconnect(), TRACEC und UNREACHABLEC.

190  {
191  TRACEC;
192  if (!newclass->routes.empty()) {
193  UNREACHABLEC;
194  return false;
195  }
196  bool open = IsOpen();
197  // Flawfinder: ignore
198  if (open) {
199  if (!newclass->IsOpen()) newclass->Open();
200  }
201  DevicePtr thisptr(static_cast<thistype *>(this));
202  routeListType::iterator i;
203  while ((i = routes.begin()) != routes.end()) {
204  reconnect(*i, thisptr, newclass);
205  }
206  TRACEC;
207  return true;
208  }
routeListType routes
Definition: Device.h:627
bool IsOpen() const
Definition: Device.h:607
#define TRACEC
Definition: mutDebug.h:151
bool reconnect(Route r, OutputDevice oldout, OutputDevice newout)
#define UNREACHABLEC
Definition: mhDefs.h:148
int ChordNote::MutNoteOff ( )

Definiert in Zeile 963 der Datei GIS_Head.cpp.

Benutzt ChordNote::AlterBegin, ChordNote::Boss, CNAlter, CNNoteOn, ChordNote::CurrentTime, ChordNote::Cursor, GetGisType(), GTNote, ChordNote::LastSep, GisToken::Next, GisWriteHead::NoteOn, ChordNote::nTie und ChordNote::Status.

964 {
965  if ( !(Status & CNNoteOn) )
966  return 1;
967 
968  if ( GetGisType(*Cursor) != GTNote )
969  return 1;
970 
971  if ( CurrentTime ) {
972  ((GisNote*)(*Cursor))->Duration = CurrentTime;
973  Cursor = &(*Cursor)->Next;
974  } else // note with no duration
975  {
976  // delete empty note
977  delete *Cursor;
978  *Cursor = 0;
979  // delete alter
980 
981  if ( Status & CNAlter && !(*AlterBegin)->Next ) {
982  delete *AlterBegin;
983  Cursor = AlterBegin;
984  *Cursor = 0;
985  Status -= CNAlter;
986  }
987 
988  LastSep = 0;
989 
990  if ( nTie ) nTie--;
991  }
992 
993  CurrentTime = 0;
994 
995  Status -= CNNoteOn;
996  Boss->NoteOn--;
997  return 0;
998 }
Definition: GIS.h:123
GisToken ** Cursor
Definition: GIS_Head.h:437
mutString * LastSep
Definition: GIS_Head.h:447
GisToken ** AlterBegin
Definition: GIS_Head.h:444
GisToken * Next
Definition: GIS.h:136
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
char NoteOn
Definition: GIS_Head.h:326
frac CurrentTime
Definition: GIS_Head.h:439
#define CNAlter
Definition: GIS_Head.h:424
Definition: GIS.h:457
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:833
int nTie
Definition: GIS_Head.h:446
#define CNNoteOn
Definition: GIS_Head.h:425
int ChordNote::MutNoteOn ( int  key,
double  pitch,
int  instrId,
int  taste,
mutString  sep 
)

Definiert in Zeile 935 der Datei GIS_Head.cpp.

Benutzt ChordNote::AddGis(), ChordNote::AlterBegin, ChordNote::Boss, ChordNote::CheckCloseAlter(), CNAlter, CNNoteOn, ChordNote::Cursor, GisWriteHead::GetKey(), GisWriteHead::GetOctave(), GMN_NO_KEY, ChordNote::InstrId, ChordNote::Key, ChordNote::LastSep, mutT, Note(), GisWriteHead::NoteOn, ChordNote::nTie, ChordNote::Pitch, GisToken::Sep, ChordNote::Status, ChordNote::Taste und TTalter.

936 {
937  if ( Status & CNNoteOn )
938  return 1;
939 
940  if ( pitch != Pitch && key != GMN_NO_KEY ) {
941  CheckCloseAlter();
942  AlterBegin = Cursor;
943  AddGis(new GisTagBegin(TTalter, 0, new GisParaReal(pitch, mutT(">(")), mutT("<"), 0));
944  Status |= CNAlter;
945  Pitch = pitch;
946  }
947 
948  GisToken *Note = new GisNote(key, Boss->GetOctave(), Boss->GetKey(), sep);
949 
950  *Cursor = Note;
951  LastSep = &Note->Sep;
952  InstrId = instrId;
953  Taste = taste;
954  Key = key;
955  Status |= CNNoteOn;
956  Boss->NoteOn++;
957 
958  if ( nTie ) nTie++;
959 
960  return 0;
961 }
GisToken ** Cursor
Definition: GIS_Head.h:437
int Taste
Definition: GIS_Head.h:448
#define TTalter
Definition: GIS.h:100
#define GMN_NO_KEY
Definition: GIS.h:105
void CheckCloseAlter()
Definition: GIS_Head.cpp:873
mutString * LastSep
Definition: GIS_Head.h:447
GisToken ** AlterBegin
Definition: GIS_Head.h:444
int GetOctave()
Definition: GIS_Head.h:388
mutString Sep
Definition: GIS.h:137
Definition: GIS.h:132
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
int Note(const mutString name, const mutString accedentials, int octave, frac duration)
Definition: GIS.cpp:712
int Key
Definition: GIS_Head.h:449
char NoteOn
Definition: GIS_Head.h:326
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:865
int InstrId
Definition: GIS_Head.h:442
double Pitch
Definition: GIS_Head.h:450
int GetKey()
Definition: GIS_Head.h:396
#define CNAlter
Definition: GIS_Head.h:424
Definition: GIS.h:457
#define mutT
Definition: Defs.h:77
int nTie
Definition: GIS_Head.h:446
#define CNNoteOn
Definition: GIS_Head.h:425
int Name2Key ( const mutString  name)

Definiert in Zeile 283 der Datei GIS.cpp.

Benutzt mutChar, mutLen und mutT.

Wird benutzt von GisNote::GetKey().

284 {
285  mutChar notes[] = mutT("c d ef g a b");
286  size_t l = mutLen(name);
287  int i = 11;
288 
289  if ( l == 1 ) {
290  while ( i >= 0 ) {
291  if ( notes[i] == name[0] )
292  break;
293 
294  i--;
295  }
296 
297  if ( name[0] == 'h' )
298  return 11;
299  else
300  return i;
301  } else if ( l == 3 ) {
302  while ( i >= 0 ) {
303  if ( notes[i] == name[0] )
304  break;
305 
306  i--;
307  }
308 
309  if ( i != -1 ) i++;
310 
311  return i;
312  } else
313  return -1;
314 }
#define mutLen(x)
Definition: Defs.h:97
#define mutChar
Definition: Defs.h:83
#define mutT
Definition: Defs.h:77
bool mutabor::NeedsRealTime ( )

Definiert in Zeile 750 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von mutaborGUI::MutFrame::CmDoActivate().

751  {
752  TRACE;
753  const OutputDeviceList& listo = OutputDeviceClass::GetDeviceList();
754  for (OutputDeviceList::const_iterator Out = listo.begin();
755  Out != listo.end(); Out++)
756  if ( (*Out)->NeedsRealTime() ) {
757  TRACE;
758  return true;
759  }
760 
761  const InputDeviceList& listi = InputDeviceClass::GetDeviceList();
762  for (InputDeviceList::const_iterator In = listi.begin();
763  In != listi.end(); In++)
764  if ( (*In)->NeedsRealTime() ) {
765  TRACE;
766  return true;
767  }
768 
769  TRACE;
770  return false;
771  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:811
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:970
#define TRACE
Definition: mutDebug.h:150
virtual bool mutabor::OutputDeviceClass::NeedsRealTime ( )
inlinevirtual

Erneute Implementation in mutabor::OutputMidiPort.

Definiert in Zeile 893 der Datei Device.h.

893  {
894  return false;
895  }
virtual bool mutabor::InputDeviceClass::NeedsRealTime ( )
inlinevirtual

Erneute Implementation in mutabor::InputMidiPort.

Definiert in Zeile 1136 der Datei Device.h.

1136  {
1137  return false;
1138  }
int NextSequenz ( )

Definiert in Zeile 703 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2 und TagMode.

Wird benutzt von DoParse().

704 {
705  DEBUGLOG2(gmnfile,_T(", "));
706 
707  if ( TagMode ) BuildTag();
708 
709  return 0;
710 }
char TagMode
Definition: GIS.cpp:112
int BuildTag()
Definition: GIS.cpp:538
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice ( const thistype r)
inline

Definiert in Zeile 135 der Datei Route.h.

Benutzt mutabor::TRouteClass< I, O, B >::NoInputDevice::route.

136  {
137  route = const_cast<thistype *>(r);
138  }
TRouteClass thistype
Definition: Route.h:111
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice ( const thistype r)
inline

Definiert in Zeile 126 der Datei Route.h.

Benutzt mutabor::TRouteClass< I, O, B >::NoOutputDevice::route.

126  :
127  invalid_argument(gettext_noop("No such output device")) {
128  route = const_cast<thistype *>(r);
129  }
#define gettext_noop(a)
Definition: Defs.h:232
TRouteClass thistype
Definition: Route.h:111
int Note ( const mutString  name,
const mutString  accedentials,
int  octave,
frac  duration 
)

Definiert in Zeile 712 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, GisToken::Next, octave, TagMode und TowxString().

Wird benutzt von ChordNote::MutNoteOn() und ReadNote().

713 {
714  DEBUGLOG2(gmnfile,_T("%s%s%d*%s: Note '%s' %s Oktave %d, Duration: %s "),
715  name.c_str(),
716  accedentials.c_str(),
717  octave,
718  TowxString(duration).c_str(),
719  name.c_str(),
720  accedentials.c_str(),
721  octave,
722  TowxString(duration).c_str());
723 
724  if ( TagMode ) BuildTag();
725 
726  GisNote *Note = new GisNote(name, accedentials, octave, duration, Sep);
727 
728  *Current = Note;
729 
730  Current = &(Note->Next);
731 
732  return 0;
733 }
char TagMode
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:136
int BuildTag()
Definition: GIS.cpp:538
static int octave
Definition: GSP.cpp:87
int Note(const mutString name, const mutString accedentials, int octave, frac duration)
Definition: GIS.cpp:712
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
wxString TowxString(const frac &f)
Definition: Frac.h:146
Definition: GIS.h:457
mutString Sep
Definition: GSP.cpp:59
static mutString accedentials
Definition: GSP.cpp:89
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::NoteOff ( int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 189 der Datei Route.h.

191  {
192  if (Active) {
193  box->DeleteNote(key,
194  make_unique,
195  session_id);
196  }
197  if (Out) {
198  Out->NoteOff(box,
199  key,
200  velocity,
201  this,
202  make_unique,
203  false);
204  }
205  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:470
OutputDevice Out
Definition: Route.h:460
void mutabor::OutputDeviceClass::NoteOff ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
bool  is_note_on 
)
inline

Definiert in Zeile 831 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_NoteOff() und mutabor::OutputDeviceClass::write_lock.

Wird benutzt von CommonMidiOutputTest::testNoteOnOff() und OutputMidiFileTest::testNoteOnOff().

836  {
837  ScopedLock lock(write_lock);
838  do_NoteOff(box,taste,velo,r,id,is_note_on);
839  }
virtual void do_NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)=0
wxMutexLocker ScopedLock
Definition: thread.h:57
void mutabor::InputDeviceClass::NoteOff ( Route R,
int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 1208 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::DoNoteOff() und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::InputGis::Proceed().

1211  {
1212  ScopedLock lock(write_lock);
1213  DoNoteOff(R, key, velocity, make_unique);
1214  }
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoNoteOff(Route &R, int key, int velocity, size_t make_unique)
Definition: Device.h:1216
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::NoteOn ( int  key,
int  velocity,
size_t  make_unique,
const ChannelData input_channel_data,
void *  userdata 
)
inline

Definiert in Zeile 169 der Datei Route.h.

173  {
174  if (Active) {
175  // global C part
176  box->AddNote(key, make_unique, session_id, userdata);
177  DEBUGLOG(routing,_T("(key = %d, channel = %lu, id = %lu)"),
178  key,
179  (unsigned long)get_session_id(),
180  (unsigned long)make_unique);
181  }
182  if (Out) {
183  Out->NoteOn(box,
184  key, velocity, this, make_unique,
185  input_channel_data);
186  }
187  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:470
size_t get_session_id() const
Definition: Route.h:396
OutputDevice Out
Definition: Route.h:460
void mutabor::OutputDeviceClass::NoteOn ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
const ChannelData input_channel_data 
)
inline

Definiert in Zeile 821 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_NoteOn() und mutabor::OutputDeviceClass::write_lock.

Wird benutzt von CommonMidiOutputTest::testMoreNotesThanChannels(), CommonMidiOutputTest::testNoteOnOff() und OutputMidiFileTest::testNoteOnOff().

826  {
827  ScopedLock lock(write_lock);
828  do_NoteOn(box,taste,velo,r,id,input_channel_data);
829 
830  }
virtual void do_NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)=0
Really Send the beginning of a sounding note.
wxMutexLocker ScopedLock
Definition: thread.h:57
void mutabor::InputDeviceClass::NoteOn ( Route R,
int  key,
int  velocity,
size_t  make_unique,
const ChannelData input_channel_data,
void *  userdata 
)
inline

Definiert in Zeile 1182 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::add(), mutabor::InputDeviceClass::current_keys, DEBUGLOG und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::InputGis::Proceed().

1185  {
1186  ScopedLock lock(write_lock);
1187  DEBUGLOG(routing,_T("(key = %d, channel = %lu, id = %lu)"),
1188  key,
1189  (unsigned long)R->get_session_id(),
1190  (unsigned long)make_unique);
1191 
1192  current_keys.add(key,
1193  velocity,
1194  make_unique,
1195  R,
1196  this,
1197  input_channel_data,
1198  userdata);
1199  if (R) {
1200  R->NoteOn(key,
1201  velocity,
1202  make_unique,
1203  input_channel_data,
1204  userdata);
1205  }
1206  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
wxMutexLocker ScopedLock
Definition: thread.h:57
void * userdata
Definition: Device.h:650
current_keys_type current_keys
Definition: Device.h:1244
void add(int key, int velocity, int unique_id, Route &R, InputDevice i, const ChannelData &c, void *userdata)
Definition: Device.h:1019
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
size_t mutabor::CommonTypedDeviceAPI< T, P, L >::nRoutes ( )
inline

Definiert in Zeile 715 der Datei Device.h.

715 { return routes.size(); };
routeListType routes
Definition: Device.h:627
bool mutabor::BoxClass::Open ( )
inline

Definiert in Zeile 336 der Datei Box.h.

Benutzt mutabor::BoxClass::DoOpen() und mutabor::BoxClass::open.

336  {
337  BoxLock lock(this);
338  if (!open)
339  open = DoOpen();
340  return open;
341  }
virtual bool DoOpen()
Definition: Box.cpp:391
virtual bool mutabor::Device::Open ( )
pure virtual
bool mutabor::OutputDeviceClass::Open ( )
inlinevirtual
bool mutabor::OpenAll ( )

Definiert in Zeile 423 der Datei Box.cpp.

Benutzt _, mutabor::BoxClass::CloseAll(), mutabor::BoxClass::GetBoxList(), mutabor::InOpen(), mutabor::BoxClass_CallOpen::ok, mutabor::OutClose() und mutabor::OutOpen().

Wird benutzt von mutabor::BoxClass::ActivateAll() und mutabor::InputDeviceClass::BatchPlay().

423  {
424  BoxClass_CallOpen callopen;
425  if (!mutabor::OutOpen())
426  return false;
427 
428  BoxListType & boxList = const_cast<BoxListType &>(BoxClass::GetBoxList());
429  std::for_each(boxList.begin(),boxList.end(),callopen);
430  if (!callopen.ok) {
431  BoxClass::CloseAll();
432  OutClose();
433  return false;
434  }
435 
436  if (!InOpen() ) {
437  BoxClass::CloseAll();
438  OutClose();
439  return false;
440  }
441 
442 
443 #if 0
444  if ( !ok ) {
445  wxMessageBox(Fmeldung, _("Activation error"), wxOK | wxICON_ASTERISK );
446 
447  return false;
448  }
449 #endif
450  return true;
451  }
void OutClose()
Definition: Device.cpp:704
std::vector< Box > BoxListType
Definition: Box.h:120
#define _
Definition: Execute.cpp:57
bool InOpen()
Definition: Device.cpp:720
bool OutOpen()
Definition: Device.cpp:686
int OpenFile ( const mutString Name)

Definiert in Zeile 62 der Datei GSP_File.cpp.

Benutzt bad, File, initialized, mutOpenITextStream und mutStreamBad.

Wird benutzt von GspParse().

63 {
64 // File = new STD_PRE::ifstream(Name, STD_PRE::ios::in/*, 0/*int = filebuf::openprot*/);
65  File = new mutOpenITextStream(Name);
66 #ifdef WX
67  initialized = false;
68  return bad=(!(File->Open()));
69 #else
70  return mutStreamBad(*File);
71 #endif
72 }
mutTextStream * File
Definition: GSP_File.cpp:45
static bool initialized
Definition: GSP_File.cpp:49
#define mutOpenITextStream(filename)
Definition: Defs.h:132
static int bad
Definition: GSP_File.cpp:51
#define mutStreamBad(stream)
Definition: Defs.h:144
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::operator const thistype & ( ) const
inline

Definiert in Zeile 744 der Datei Device.h.

744  {
745  return *(static_cast <const thistype *>(this));
746  }
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::operator thistype & ( )
inline

Definiert in Zeile 748 der Datei Device.h.

748  {
749  return *(static_cast <thistype *>(this));
750  }
uint8_t mutabor::InputDeviceClass::current_keys_type::hash_type::operator() ( const entry val) const
inline

Definiert in Zeile 1006 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::entry::key, mutabor::InputDeviceClass::current_keys_type::entry::route und mutabor::InputDeviceClass::current_keys_type::entry::unique_id.

1006  {
1007  size_t seed = 0;
1008  boost::hash_combine(seed, val.key);
1009  boost::hash_combine(seed, val.unique_id);
1010  boost::hash_combine(seed, val.route.get());
1011  return seed & 0xFF;
1012  }
ScopedRoute& mutabor::ScopedRoute::operator= ( element_type *  rhs)
inline

Definiert in Zeile 747 der Datei Route.h.

747  {
748  (*(static_cast<Route *>(this))) = rhs;
749  return *this;
750  }
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:542
ScopedRoute& mutabor::ScopedRoute::operator= ( const Route rhs)
inline

Definiert in Zeile 751 der Datei Route.h.

751  {
752  (*(static_cast<Route *>(this))) = rhs;
753  return *this;
754  }
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:542
ScopedBox& mutabor::ScopedBox::operator= ( BoxClass rhs)
inline

Definiert in Zeile 803 der Datei Box.h.

803  {
804  (*(static_cast<Box *>(this))) = rhs;
805  return *this;
806  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
ScopedBox& mutabor::ScopedBox::operator= ( const Box rhs)
inline

Definiert in Zeile 807 der Datei Box.h.

807  {
808  (*(static_cast<Box *>(this))) = rhs;
809  return *this;
810  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
ScopedInputDevice& mutabor::ScopedInputDevice::operator= ( InputDeviceClass rhs)
inline

Definiert in Zeile 1411 der Datei Device.h.

1411  {
1412  (*(static_cast<InputDevice *>(this))) = rhs;
1413  return *this;
1414  }
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
ScopedInputDevice& mutabor::ScopedInputDevice::operator= ( const InputDevice rhs)
inline

Definiert in Zeile 1415 der Datei Device.h.

1415  {
1416  (*(static_cast<InputDevice *>(this))) = rhs;
1417  return *this;
1418  }
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
ScopedOutputDevice& mutabor::ScopedOutputDevice::operator= ( OutputDeviceClass rhs)
inline

Definiert in Zeile 1427 der Datei Device.h.

1427  {
1428  (*(static_cast<OutputDevice *>(this))) = rhs;
1429  return *this;
1430  }
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:809
ScopedOutputDevice& mutabor::ScopedOutputDevice::operator= ( const OutputDevice rhs)
inline

Definiert in Zeile 1431 der Datei Device.h.

1431  {
1432  (*(static_cast<OutputDevice *>(this))) = rhs;
1433  return *this;
1434  }
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:809
bool mutabor::InputDeviceClass::current_keys_type::entry::operator== ( const entry e) const
inline
void mutabor::OutAddTime ( frac  time)

Definiert in Zeile 712 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von main().

713  {
714  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
715  for (OutputDeviceList::const_iterator Out = list.begin();
716  Out != list.end(); Out++)
717  (*Out)->AddTime(time);
718  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:811
void mutabor::OutClose ( )

Definiert in Zeile 704 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von mutabor::InputDeviceClass::BatchPlay(), main(), mutabor::OpenAll() und mutabor::BoxClass::StopAll().

705  {
706  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
707  for (OutputDeviceList::const_iterator Out = list.begin();
708  Out != list.end(); Out++)
709  (*Out)->Close();
710  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:811
bool mutabor::OutOpen ( )

Definiert in Zeile 686 der Datei Device.cpp.

Benutzt DEBUGLOG2 und mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von main() und mutabor::OpenAll().

687  {
688  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
689  DEBUGLOG2(midiio,_T("count: %d"),(int)list.size());
690  for (OutputDeviceList::const_iterator Out = list.begin();
691  Out != list.end(); Out++)
692  if ( !(*Out)->Open() ) {
693  for (OutputDeviceList::const_iterator Out1
694  = list.begin();
695  Out1 != Out; Out1++)
696  (*Out1)->Close();
697 
698  return false;
699  }
700 
701  return true;
702  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:811
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel ( ) const
inline
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel ( bool  avoid)
inline

Definiert in Zeile 379 der Datei Route.h.

379  {
380  ONoDrum = avoid;
381  }
mutabor::OutputDeviceClass::OutputDeviceClass ( )
inlineprotected

Definiert in Zeile 915 der Datei Device.h.

915  :CommonTypedDeviceAPI<OutputDeviceClass>(),
916  write_lock() {}
mutabor::OutputDeviceClass::OutputDeviceClass ( const mutStringRef  name,
int  id = -1 
)
inlineprotected

Definiert in Zeile 918 der Datei Device.h.

919  :
920  CommonTypedDeviceAPI<OutputDeviceClass>(name, id),
921  write_lock() {}
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Panic ( int  type)
inline

Definiert in Zeile 247 der Datei Route.h.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::Panic().

247  {
248  if (box)
249  box-> Panic(this,type);
250  if (Out)
251  Out -> Quiet(this, type);
252  }
void Panic(int type)
Definition: Route.h:247
OutputDevice Out
Definition: Route.h:460
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Panic ( int  type,
size_t  unique_id 
)
inline

Definiert in Zeile 254 der Datei Route.h.

254  {
255  if (box)
256  box-> Panic(this, type, unique_id);
257  if (Out)
258  Out -> Quiet(this, type, unique_id);
259  }
void Panic(int type)
Definition: Route.h:247
OutputDevice Out
Definition: Route.h:460
void mutabor::BoxClass::Panic ( int  type)
virtual

reset the device if requested

Definiert in Zeile 377 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_reset_keys() und mutASSERT.

377  {
378  BoxLock lock(this);
379  mutASSERT(open);
381  }
struct mutabor_box_type * box
Definition: Box.h:648
void mutabor_reset_keys(struct mutabor_box_type *box)
Definition: box.cpp:72
#define mutASSERT
Definition: Defs.h:222
void mutabor::BoxClass::Panic ( Route  r,
int  type 
)
virtual

Definiert in Zeile 350 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_note_type::channel, DEBUGLOG, mutabor::hidden::mutabor_note_type::id, mutabor::hidden::mutabor_find_key_in_box(), mutASSERT, mutabor::hidden::mutabor_note_type::next und mutabor::hidden::mutabor_note_type::number.

351  {
352  BoxLock lock(this);
353 #ifdef DEBUG
354  size_t channel = r -> get_session_id();
355  mutabor_note_type * key;
356  size_t index = 0;
357  while ((key = hidden::mutabor_find_key_in_box(box,
358  index))
359  != NULL) {
360  if (key -> channel == channel)
361  break;
362  index = key->next;
363  }
364 
365  if (key != NULL) {
366  DEBUGLOG(routing,_T("(key = %d, channel = %lu, id = %lu)"),
367  key->number,
368  key->channel,
369  key->id);
370 
371  }
372  mutASSERT(key == NULL);
373 #endif
374 
375  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:215
struct mutabor_box_type * box
Definition: Box.h:648
size_t get_session_id() const
Definition: Box.h:163
#define mutASSERT
Definition: Defs.h:222
void mutabor::BoxClass::Panic ( Route  r,
int  type,
size_t  unique_id 
)
virtual

Definiert in Zeile 329 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_find_key_in_box(), mutASSERT und mutabor::hidden::mutabor_note_type::next.

330  {
331  BoxLock lock(this);
332 #ifdef DEBUG
333  size_t channel = r -> get_session_id();
334  mutabor_note_type * key;
335  size_t index = 0;
336  while ((key = hidden::mutabor_find_key_in_box(box,
337  index))
338  != NULL) {
339  if (key -> channel == channel
340  && key -> id == unique_id)
341  break;
342  index = key->next;
343  }
344 
345  mutASSERT(key == NULL);
346 #endif
347 
348  }
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:215
struct mutabor_box_type * box
Definition: Box.h:648
size_t get_session_id() const
Definition: Box.h:163
#define mutASSERT
Definition: Defs.h:222
virtual void mutabor::Device::Panic ( int  type)
pure virtual

reset the device if requested

Implementiert in mutabor::InputDeviceClass, mutabor::OutputDeviceClass und mutabor::InputGis.

void mutabor::OutputDeviceClass::Panic ( int  type)
inlinevirtual

reset the device if requested

Implementiert mutabor::Device.

Definiert in Zeile 884 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Panic() und mutabor::OutputDeviceClass::write_lock.

884  {
885  ScopedLock lock(write_lock);
886  do_Panic(type);
887  };
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_Panic(int type)
Definition: Device.h:960
void mutabor::Panic ( int  type)

Definiert in Zeile 990 der Datei Box.cpp.

Benutzt mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList() und mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList().

Wird benutzt von mutabor::InputMidiPort::Close(), mutaborGUI::MutFrame::CmPanic(), mutabor::CommonMidiInput< D >::ProceedRoute() und CommonMidiInputTest::testGlobalPanic().

990  {
991  dopanic_type dopanic(type);
992 
993  const InputDeviceList & inlist = InputDeviceClass::GetDeviceList();
994  std::for_each(inlist.begin(),inlist.end(),dopanic);
995 
996  const BoxListType & boxlist = BoxClass::GetBoxList();
997  std::for_each(boxlist.begin(),boxlist.end(),dopanic);
998 
999  const OutputDeviceList & outlist = OutputDeviceClass::GetDeviceList();
1000  std::for_each(outlist.begin(),outlist.end(),dopanic);
1001  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:811
std::vector< Box > BoxListType
Definition: Box.h:120
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:970
void mutabor::InputDeviceClass::Panic ( int  type)
virtual

reset the device if requested

Implementiert mutabor::Device.

Erneute Implementation in mutabor::InputGis.

Definiert in Zeile 442 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::DoSilenceKeys(), mutabor::Device::routes und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::InputMidiPort::Stop(), mutabor::InputDeviceClass::Stop(), CommonMidiInputTest::testPanic() und mutabor::CommonFileInputDevice::ThreadPlay().

442  {
443  ScopedLock lock(write_lock);
444  DoSilenceKeys(true);
445 
446  for (routeListType::iterator j = routes.begin(); j!= routes.end(); j++) {
447  (*j)->Panic(type);
448  }
449  }
routeListType routes
Definition: Device.h:627
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoSilenceKeys(bool remove)
Definition: Device.cpp:362
void mutabor::InputDeviceClass::Panic ( int  type,
size_t  unique_id 
)

Definiert in Zeile 411 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::current_keys_type::add(), mutabor::InputDeviceClass::current_keys_type::begin(), mutabor::midi::CONTROLLER_OFF, mutabor::InputDeviceClass::current_keys, mutabor::InputDeviceClass::DoNoteOff(), mutabor::InputDeviceClass::current_keys_type::end(), mutabor::midi::get_holds(), mutabor::InputDeviceClass::current_keys_type::remove(), mutabor::Device::routes und mutabor::InputDeviceClass::write_lock.

412  {
413  ScopedLock lock(write_lock);
414 
415  current_keys_type tmp;
417 
418  for (i = current_keys.begin();i!= current_keys.end();i++) {
419  if (i->unique_id != unique_id) continue;
420  tmp.add(*i);
421  }
422  while ((i = tmp.begin())!= tmp.end()) {
423  for (const int * j = midi::get_holds();
424  *j >= 0; j++) {
425  i->route->Controller(*j,
427  i->unique_id);
428  }
429  // Maps have constant entries
430  DoNoteOff(const_cast<Route &>(i->route),
431  i->key,i->velocity,i->unique_id);
432  tmp.remove(i);
433  }
434 
435  InputDevice self = this;
436  for (routeListType::iterator j = routes.begin(); j!= routes.end(); j++) {
437  (*j)->Panic(type,unique_id);
438 
439  }
440  }
routeListType routes
Definition: Device.h:627
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoNoteOff(Route &R, int key, int velocity, size_t make_unique)
Definition: Device.h:1216
current_keys_type current_keys
Definition: Device.h:1244
virtual void Panic(int type)=0
reset the device if requested
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:400
virtual void mutabor::Device::Pause ( )
inlinevirtual

Pause playback or recording of the device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::InputMidiPort, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice und testCommonFileDeviceTimer.

Definiert in Zeile 537 der Datei Device.h.

537 {}
virtual void mutabor::InputDeviceClass::Pause ( )
inlinevirtual

Pause playback or recording of the device.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiPort, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice und testCommonFileDeviceTimer.

Definiert in Zeile 1129 der Datei Device.h.

Benutzt mutabor::DevicePause und mutabor::Device::Mode.

1129  {
1130  Mode = DevicePause;
1131  }
enum MutaborModeType Mode
Definition: Device.h:626
virtual void mutabor::Device::Play ( )
inlinevirtual

Start playback or recording of the device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 530 der Datei Device.h.

530 {}
virtual void mutabor::InputDeviceClass::Play ( )
inlinevirtual

Command the device to play music.

This function starts playing the music of the device at the curren position.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 1091 der Datei Device.h.

Benutzt mutabor::DevicePause, mutabor::DevicePlay, mutabor::DeviceStop und mutabor::Device::Mode.

1091  {
1092  if (Mode == DeviceStop || Mode == DevicePause)
1093  Mode = DevicePlay;
1094  }
enum MutaborModeType Mode
Definition: Device.h:626
virtual mutint64 mutabor::InputDeviceClass::PrepareNextEvent ( )
inlinevirtual

Go on to the next event.

This function must be provided by the device. It is asked to prepare the next event and return the time to wait in microseconds from the start of the piece. Though the timer has only milliseconds resolution, the errors will sum up so that we need a much higher resolution, here.

Here, we use the measure that is used in the SMF standard. It has been designed to reduce the deviation of a 4 minutes piece at 120 bpm to 500μs. If it were 500ms it would be unusable.

Rückgabe
uint_fast64_t Absolute temporal position of the next event in the piece in μs.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputGis, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 1159 der Datei Device.h.

Benutzt MUTABOR_NO_DELTA.

Wird benutzt von mutabor::CommonFileInputDevice::ThreadPlay().

1159 { return MUTABOR_NO_DELTA; }
#define MUTABOR_NO_DELTA
Definition: timing.h:62
int GisWriteHead::ProceedGis ( GisToken token,
char  turn = 0 
)

cout << "[" << Id << "," << (int)turn << "]"; token->Echo();

cout << " ";

Definiert in Zeile 1258 der Datei GIS_Head.cpp.

Benutzt AddTag(), GisWriteHead::ChordNotes, GisWriteHead::CloseCurrentToken(), GisWriteHead::CommaAtEnd, GisToken::Copy(), GisWriteHead::Cursor, TagListData::Data, EndTag(), GisWriteHead::GetFreeNote(), GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, TagListData::data::i, GisWriteHead::Id, GisWriteHead::Key, GisWriteHead::NoteOn, GisWriteHead::Octave, GisToken::Sep, ChordNote::SetNoteOff(), ChordNote::SetNoteOn(), GisWriteHead::State(), TTkey, TToct, GisToken::Type(), GisWriteHead::WriteChord(), WTAG und WTAGEND.

Wird benutzt von GisWriteHeadGis().

1259 {
1262  int Res = 0;
1263  int Id;
1264 
1265  if ( turn == 1 ) return 0;
1266 
1267  CommaAtEnd = 0;
1268 
1269  if ( !turn ) // this token first time
1270  {
1271  Res = CloseCurrentToken(); // close the current Token
1272 
1273  if ( Res ) return Res;
1274 
1275  switch ( token->Type() )
1276  {
1277 
1278  case GTNull:
1279  return 3; // impossible
1280 
1281  case GTUnknown:
1282  *Cursor = new GisToken(token->Sep);
1283 
1284  Cursor = &((*Cursor)->Next);
1285 
1286  break;
1287 
1288  case GTSequenz:
1289  *Cursor = new GisSequenz(0, token->Sep);
1290 
1291  ((GisSequenz*)*Cursor)->Sep2 = ((GisSequenz*)token)->Sep2;
1292 
1293  break;
1294 
1295  case GTSegment:
1296  *Cursor = new GisSegment(0, token->Sep);
1297 
1298  ((GisSegment*)*Cursor)->Sep2 = ((GisSegment*)token)->Sep2;
1299 
1300  break;
1301 
1302  case GTTag:
1303 
1304  case GTTagBegin:
1305  /* if ( token->Type() == GTTag )
1306  *Cursor = new GisTag(((GisTag*)token)->Name, ((GisTag*)token)->Para,
1307  token->Sep);
1308  else
1309  *Cursor = new GisTagBegin(((GisTag*)token)->Name, ((GisTag*)token)->Para,
1310  token->Sep); */
1311  *Cursor = token->Copy();
1312 
1313  Id = WTAG->Id;
1314 
1315  if ( Id == TToct ) {
1316  if ( WTAG->GetParaType(1) == GTParaInt )
1317  AddTag(&Octave, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i;
1318  } else if ( Id == TTkey ) {
1319  if ( WTAG->GetParaType(1) == GTParaInt )
1320  AddTag(&Key, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i;
1321  }
1322 
1323  Cursor = &((*Cursor)->Next);
1324 
1325  break;
1326 
1327  case GTTagEnd:
1328  *Cursor = new GisTagEnd(0, token->Sep);
1329 
1330  Cursor = &((*Cursor)->Next);
1331 
1332  if ( WTAGEND->Begin ) {
1333  Id = WTAGEND->Begin->Id;
1334 
1335  if ( Id == TToct )
1336  EndTag(&Octave, WTAGEND);
1337  else if ( Id == TTkey )
1338  EndTag(&Key, WTAGEND);
1339  }
1340 
1341  break;
1342 
1343  case GTParaInt:
1344 
1345  case GTParaReal:
1346 
1347  case GTParaStr:
1348  return 4;
1349 
1350  case GTComma:
1351  *Cursor = new GisComma(token->Sep);
1352 
1353  Cursor = &((*Cursor)->Next);
1354 
1355  CommaAtEnd = 1;
1356 
1357  break;
1358 
1359  case GTNote:
1360  ChordNote *ANote = GetFreeNote();
1361 
1362  if ( ANote )
1363  ANote->SetNoteOn(token);
1364  else
1365  return 1;
1366 
1367  break;
1368  }
1369  }
1370  else // second call
1371  {
1372  if ( State() != token->Type() && token->Type() != GTNote) return 2;
1373 
1374  if ( token->Type() != GTNote )
1375  Res = CloseCurrentToken();
1376  else {
1377  if ( ChordNotes ) {
1378  Res = !ChordNotes->SetNoteOff(token);
1379  }
1380 
1381  if ( !NoteOn ) // write the Chord
1382  WriteChord();
1383  }
1384  }
1385 
1386  return Res;
1387 }
Definition: GIS.h:123
ChordNote * ChordNotes
Definition: GIS_Head.h:325
TagList * Octave
Definition: GIS_Head.h:328
void SetNoteOn(GisToken *note)
Definition: GIS_Head.cpp:839
Definition: GIS.h:119
Definition: GIS.h:120
Definition: GIS.h:116
char CommaAtEnd
Definition: GIS_Head.h:327
virtual GisToken * Copy()
Definition: GIS.h:159
Definition: GIS.h:122
mutString Sep
Definition: GIS.h:137
Definition: GIS.h:132
TagList * EndTag(TagList **list, GisTagEnd *tagEnd)
Definition: GIS_Head.cpp:496
ChordNote * GetFreeNote()
Definition: GIS_Head.cpp:1043
char NoteOn
Definition: GIS_Head.h:326
Definition: GIS.h:127
Definition: GIS.h:117
GisType State()
Definition: GIS_Head.h:371
mutString Id
Definition: GIS_Head.h:322
Definition: GIS.h:124
union TagListData::data Data
void WriteChord()
Definition: GIS_Head.cpp:1389
Definition: GIS.h:639
GisToken ** Cursor
Definition: GIS_Head.h:320
Definition: GIS.h:420
#define TToct
Definition: GIS.h:99
virtual GisType Type() const
Definition: GIS.h:154
int CloseCurrentToken(char insertRest=1)
Definition: GIS_Head.cpp:1185
TagList * Key
Definition: GIS_Head.h:329
#define WTAG
Definition: GIS_Head.cpp:1255
Definition: GIS.h:118
#define TTkey
Definition: GIS.h:98
#define WTAGEND
Definition: GIS_Head.cpp:1256
Definition: GIS.h:126
TagList * AddTag(TagList **list, GisTag *tag)
Definition: GIS_Head.cpp:480
int SetNoteOff(GisToken *note)
Definition: GIS_Head.cpp:847
void mutabor::ChannelData::program_change ( int  program)
inline

Definiert in Zeile 412 der Datei Device.h.

Benutzt mutabor::midi::BANK_COARSE, mutabor::ChannelData::bank_coarse, mutabor::midi::BANK_FINE, mutabor::ChannelData::bank_fine, mutabor::ChannelData::controller und mutabor::ChannelData::Sound.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange() und mutabor::InputGis::Proceed().

412  {
413  Sound = program;
414  int8_t data = controller[midi::BANK_COARSE];
415  if (data != -1) {
416  bank_coarse = data;
418  }
419 
420  data = controller[midi::BANK_FINE];
421  if (data != -1) {
422  bank_fine = data;
424  }
425  }
controller_vector controller
Definition: Device.h:460
uint8_t bank_fine
Definition: Device.h:467
uint8_t bank_coarse
Definition: Device.h:466
void mutabor::ChannelData::program_change ( const ChannelData o)
inline
void mutabor::OutputDeviceClass::Quiet ( Route  r,
int  type 
)
inline

Definiert in Zeile 875 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Quiet() und mutabor::OutputDeviceClass::write_lock.

875  {
876  ScopedLock lock(write_lock);
877  do_Quiet(r,type);
878  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_Quiet(Route r, int type)=0
void mutabor::OutputDeviceClass::Quiet ( Route  r,
int  type,
size_t  id 
)
inline

Definiert in Zeile 879 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Quiet() und mutabor::OutputDeviceClass::write_lock.

879  {
880  ScopedLock lock(write_lock);
881  do_Quiet(r,type,id);
882  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_Quiet(Route r, int type)=0
void GisReadHead::Read ( )

Definiert in Zeile 319 der Datei GIS_Head.cpp.

Benutzt GisReadHead::CreateSegmentSubs(), GisReadHead::CreateSequenzSubs(), GisReadHead::Cursor, DEBUGLOG, GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, GisReadHead::Time und GisToken::Type().

Wird benutzt von GisReadHeadOn().

320 {
321  DEBUGLOG (gmnfile, _T("Cursor: %p"), (void*)Cursor);
322 
323  if ( !Cursor ) return;
324 
325  switch ( Cursor->Type() ) {
326 
327  case GTSegment:
329 
330  break;
331 
332  case GTSequenz:
334 
335  break;
336 
337  case GTNote:
338  DEBUGLOG (gmnfile, _T("Setting time"));
339 
340  Time = ((GisNote*)Cursor)->Duration;
341 
342  break;
343  case GTNull:case GTUnknown:case GTTag:case GTTagBegin:case GTTagEnd:
344  case GTParaInt:case GTParaReal:case GTParaStr:case GTComma:
345  ;
346 
347  }
348 
349  // the other tokens dont influenz the way of reading
350 }
GisToken * Cursor
Definition: GIS_Head.h:70
Definition: GIS.h:123
frac Time
Definition: GIS_Head.h:71
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
Definition: GIS.h:119
Definition: GIS.h:120
Definition: GIS.h:116
Definition: GIS.h:122
Definition: GIS.h:127
void CreateSegmentSubs()
Definition: GIS_Head.cpp:265
Definition: GIS.h:117
Definition: GIS.h:124
virtual GisType Type() const
Definition: GIS.h:154
Definition: GIS.h:457
void CreateSequenzSubs()
Definition: GIS_Head.cpp:303
Definition: GIS.h:118
Definition: GIS.h:126
void GisReadArtHead::Read ( )

Definiert in Zeile 516 der Datei GIS_Head.cpp.

Benutzt AddTag(), GisReadArtHead::Alter, ARStaccatto, ARTenuto, GisReadArtHead::Articulation, ArticulationHold, TagListData::data::ch, GisReadHead::CreateSegmentSubs(), GisReadHead::CreateSequenzSubs(), GisReadHead::Cursor, TagListData::Data, DEBUGLOG, frac::denominator(), EndTag(), GisReadArtHead::GetArticulation(), GetMidiInstrument(), GetReal(), GetTheSpeedFactor(), GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, TagListData::data::i, GisReadHead::Id, GisReadArtHead::Instr, GisReadArtHead::Intensity, frac::numerator(), GisReadArtHead::Octave, TAG, TAGEND, GisReadArtHead::Tempo, GisReadHead::Time, GisReadArtHead::Time2, TTaccent, TTalter, TTinstr, TTintens, TToct, TTstacc, TTtempo, TTten, GisReadHead::Turn und GisToken::Type().

Wird benutzt von GisReadArtHeadOn(), IMPLEMENT_APP() und mutabor::InputGis::ReadOn().

517 {
518  int Id = 0;
519  DEBUGLOG (gmnfile, _T("Id: %d; Cursor: %p"), Id, (void*) Cursor);
520 
521  if ( !Cursor ) return;
522 
523  Turn = 3;
524 
525  DEBUGLOG (gmnfile, _T("Cursor->Type %d"), Cursor->Type());
526 
527  switch ( Cursor->Type() ) {
528 
529  case GTSegment:
531 
532  Turn = 2;
533 
534  break;
535 
536  case GTSequenz:
538 
539  Turn = 2;
540 
541  break;
542 
543  case GTNote:
544  Time2 = ((GisNote*)Cursor)->Duration;
545 
547 
548  DEBUGLOG (gmnfile, _T("GTNote: Time: %ld/%ld; Time2: %ld/%ld (=Cursor->Duration)"),
550 
551  Time2 -= Time;
552 
553  DEBUGLOG (gmnfile, _T("Time: %ld/%ld; Time2: %ld/%ld"),
554  Time.numerator(),Time.denominator(),Time2.numerator(),Time2.denominator());
555 
556  Turn = 1;
557 
558  break;
559 
560  case GTTag:
561 
562  case GTTagBegin:
563  Id = TAG->Id;
564 
565  if ( Id == TTintens ) {
566  if ( TAG->GetParaType(2) == GTParaInt || TAG->GetParaType(2) == GTParaReal)
567  AddTag(&Intensity, TAG)->Data.ch = (char) (GetReal(TAG->GetPara(2)) * 127);
568  } else if ( Id == TTaccent ) {
569  AddTag(&Intensity, TAG)->Data.ch = 120; // ??? what value
570  } else if ( Id == TTstacc ) {
572  } else if ( Id == TTten ) {
574  } else if ( Id == TToct ) {
575  if ( TAG->GetParaType(1) == GTParaInt )
576  AddTag(&Octave, TAG)->Data.i = ((GisParaInt*)TAG->GetPara(1))->i;
577  } else if ( Id == TTalter ) {
578  if ( TAG->GetParaType(1) != GTParaStr )
579  AddTag(&Alter, TAG)->Data.i = (int) (GetReal(TAG->GetPara(1)) * 0x1FFF) ;
580  } else if ( Id == TTinstr ) {
581  if ( TAG->GetParaType(2) == GTParaStr )
582  AddTag(&Instr, TAG)->Data.ch = GetMidiInstrument(TAG->GetPara(2));
583  } else if ( Id == TTtempo ) {
584  if ( TAG->GetParaType(2) == GTParaStr ) {
585  long int speed =
586  (AddTag(&Tempo, TAG)->Data.i =
587  GetTheSpeedFactor(TAG->GetPara(2)));
588  DEBUGLOG (gmnfile, _T("Got speed factor %ld"),speed);
589  }
590  }
591 
592  break;
593 
594  case GTTagEnd:
595  DEBUGLOG (gmnfile, _T("Ended tag."));
596 
597  if ( !TAGEND->Begin )
598  break;
599 
600  DEBUGLOG (gmnfile, _T("Tag Id was %d."),TAGEND->Begin->Id);
601 
602  Id = TAGEND->Begin->Id;
603 
604  if ( Id == TTintens || Id == TTaccent )
606  else if ( Id == TTstacc || Id == TTten )
608  else if ( Id == TToct )
609  EndTag(&Octave, TAGEND);
610  else if ( Id == TTalter )
611  EndTag(&Alter, TAGEND);
612  else if ( Id == TTinstr )
613  EndTag(&Instr, TAGEND);
614  else if ( Id == TTtempo )
615  EndTag(&Tempo, TAGEND);
616  case GTNull:case GTUnknown:
617  case GTParaInt:case GTParaReal:case GTParaStr:case GTComma:
618  ;
619 
620 
621  }
622 
623  // the other tokens don't influenz the way of reading
624 }
GisToken * Cursor
Definition: GIS_Head.h:70
Definition: GIS.h:123
frac Time
Definition: GIS_Head.h:71
TagList * Instr
Definition: GIS_Head.h:175
#define TTalter
Definition: GIS.h:100
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
mutint64 GetTheSpeedFactor(GisToken *token)
This function returns the speed factor that must be multiplied to the duration value in order to get ...
Definition: GIS_Head.cpp:98
Definition: GIS.h:119
Definition: GIS.h:120
Definition: GIS.h:116
#define TAG
Definition: GIS_Head.cpp:513
TagList * Alter
Definition: GIS_Head.h:174
Definition: GIS.h:122
Definition: Frac.h:60
TagList * EndTag(TagList **list, GisTagEnd *tagEnd)
Definition: GIS_Head.cpp:496
double GetReal(GisToken *token)
Definition: GIS_Head.cpp:48
mutint64 denominator() const
Definition: Frac.h:87
char ArticulationHold[5]
Definition: GIS_Head.cpp:42
TagList * Intensity
Definition: GIS_Head.h:171
TagList * Tempo
Definition: GIS_Head.h:176
#define TTten
Definition: GIS.h:97
#define TTtempo
Definition: GIS.h:92
Definition: GIS.h:127
void CreateSegmentSubs()
Definition: GIS_Head.cpp:265
Definition: GIS.h:117
Definition: GIS.h:124
union TagListData::data Data
char Turn
Definition: GIS_Head.h:73
#define TTinstr
Definition: GIS.h:93
mutint64 numerator() const
Definition: Frac.h:85
#define TTaccent
Definition: GIS.h:96
TagList * Octave
Definition: GIS_Head.h:173
char GetMidiInstrument(GisToken *token)
Definition: GIS_Head.cpp:58
#define TToct
Definition: GIS.h:99
#define TTintens
Definition: GIS.h:90
#define TTstacc
Definition: GIS.h:95
virtual GisType Type() const
Definition: GIS.h:154
mutString Id
Definition: GIS_Head.h:72
Definition: GIS.h:457
TagList * Articulation
Definition: GIS_Head.h:172
ARType GetArticulation()
Definition: GIS_Head.h:231
void CreateSequenzSubs()
Definition: GIS_Head.cpp:303
Definition: GIS.h:118
Definition: GIS.h:126
#define TAGEND
Definition: GIS_Head.cpp:514
TagList * AddTag(TagList **list, GisTag *tag)
Definition: GIS_Head.cpp:480
virtual void mutabor::BoxClass::ReadData ( wxConfigBase *  config)
inlinevirtual

Definiert in Zeile 330 der Datei Box.h.

330 {};
virtual void mutabor::Device::ReadData ( wxConfigBase *  config)
inlinevirtual

Definiert in Zeile 593 der Datei Device.h.

593 {};
long ReadLong ( int  SignAllowed)

Definiert in Zeile 341 der Datei GSP.cpp.

Benutzt CHAR0, CurrentLine, CurrentPos, DEBUGLOG2, GetSep(), mutIsdigit, mutT, NumberLength und SepPos.

Wird benutzt von ReadNote() und ReadParaNumber().

342 {
343  long a = 0;
344  NumberLength = 0;
345  minus = false;
346 
347  if ( SignAllowed ) {
348  DEBUGLOG2(other,_T("Sign char %c?"), CHAR0);
349 
350  if ( CHAR0 == mutT('+') ) CurrentPos++;
351  else if ( CHAR0 == mutT('-') ) {
352  CurrentPos++;
353  minus = true;
354  }
355  }
356 
357  GetSep();
358 
359  while ( mutIsdigit(CHAR0) && !SepPos ) {
360  DEBUGLOG2(other,_T("Number char %c? (a=%ld)"), CHAR0, a);
361  a = a*10 + (CurrentLine[CurrentPos++]-mutT('0'));
362  NumberLength++;
363  GetSep();
364  }
365 
366  if ( minus ) return -a;
367 
368  return a;
369 }
#define CHAR0
Definition: GSP.cpp:214
int NumberLength
Definition: GSP.cpp:75
mutString CurrentLine
Definition: GSP_File.cpp:38
bool minus
Definition: GSP.cpp:338
size_t CurrentPos
Definition: GSP_File.cpp:42
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
#define mutT
Definition: Defs.h:77
#define mutIsdigit
Definition: Defs.h:118
int GetSep()
Definition: GSP.cpp:227
#define SepPos
Definition: GSP.cpp:66
int ReadNewLine ( )

Definiert in Zeile 83 der Datei GSP_File.cpp.

Benutzt bad, CurrentLine, CurrentPos, Eof, File, GspCurrentLineNr, initialized, mutEmptyString, mutStreamBad und mutStreamEOF.

Wird benutzt von GetSep() und ReadParaStr().

84 {
85  CurrentPos = 0;
86 #ifdef WX
87 
88  if ( (Eof = mutStreamEOF(*File)) || bad ) {
90  return bad;
91  }
92 
93  if (initialized)
94  CurrentLine = File->GetNextLine();
95  else {
96  CurrentLine = File->GetFirstLine();
97  initialized = true;
98  }
99 
101 
102  return bad;
103 #else
104 
105  if ( (Eof = mutStreamEOF(*File)) || mutStreamBad(*File) ) {
106  CurrentLine[0] = 0;
107  return mutStreamBad(*File);
108  }
109 
110  File->getline(CurrentLine, GSP_MAX_LINE);
111 
113  return mutStreamBad(*File);
114 #endif
115 }
int Eof
Definition: GSP_File.cpp:43
mutString CurrentLine
Definition: GSP_File.cpp:38
mutTextStream * File
Definition: GSP_File.cpp:45
static bool initialized
Definition: GSP_File.cpp:49
size_t CurrentPos
Definition: GSP_File.cpp:42
static int bad
Definition: GSP_File.cpp:51
#define mutStreamBad(stream)
Definition: Defs.h:144
int GspCurrentLineNr
Definition: GSP.cpp:47
#define mutStreamEOF(stream)
Definition: Defs.h:146
#define mutEmptyString
Definition: Defs.h:86
int ReadNote ( )

Definiert in Zeile 493 der Datei GSP.cpp.

Benutzt accedentials, CHAR0, CharIn(), CheckError(), CurrentLine, CurrentPos, DEBUGLOG2, DoError(), duration, GetSep(), IsLetter(), mutChar, mutString, mutT, Note(), octave, ReadLong() und SepPos.

Wird benutzt von DoParse().

494 {
495  mutChar i = 0;
496 #ifdef WX
497  mutString Name /* [GSP_MAX_LINE]*/ = wxEmptyString;
498  accedentials = wxEmptyString;
499 #else
500  mutChar Name[GSP_MAX_LINE] = mutT("");
501  accedentials[0] = 0;
502 #endif
503 
504  GetSep();
505 
506 #ifdef WX
507 
508  for (i = CurrentPos; IsLetter(CHAR0) && !SepPos; CurrentPos++)
509  GetSep();
510 
511  Name = CurrentLine(i,CurrentPos-i);
512 
513  GetSep();
514 
515 #else
516  while ( IsLetter(CHAR0) && !SepPos ) {
517  Name[i++] = CurrentLine[CurrentPos++];
518  GetSep();
519  mutString Name /* [GSP_MAX_LINE]*/ = mutT("");
520 
521  }
522 
523  Name[i] = 0;
524 
525 #endif
526 
527  DEBUGLOG2(other,_T("SepPos: %d"),(int)SepPos);
528 
529  if ( SepPos )
530  return CheckError(Note(Name, accedentials, octave, duration));
531 
532  i = 0; // accedentials
533 
534  while ( CharIn(CHAR0, mutT("#&")) && !SepPos ) {
535 #ifdef WX
537 #else
539 #endif
540  GetSep();
541  }
542 
543 #ifndef WX
544  accedentials[i] = 0;
545 
546 #endif
547 
548  DEBUGLOG2(other,_T("SepPos: %d"),(int)SepPos);
549 
550  if ( SepPos )
551  return CheckError(Note(Name, accedentials, octave, duration));
552 
553  size_t cp = CurrentPos; // octave
554 
555  int oct = ReadLong(1);
556 
557  if ( cp != CurrentPos ) octave = oct;
558 
559  if ( SepPos || !CharIn(CHAR0, mutT("/*.")) )
560  return CheckError(Note(Name, accedentials, octave, duration));
561 
562  int DurOk = 0; // duration
563 
564  duration = frac(1,1);
565 
566  if ( CHAR0 == mutT('*') ) {
567  DurOk = 1;
568  CurrentPos++;
569  duration = frac(ReadLong(0));
570 
571  if ( !duration )
572  return DoError(21); // error: nominator expected
573  }
574 
575  if ( SepPos || !CharIn(CHAR0, mutT("/.")) )
576  return CheckError(Note(Name, accedentials, octave, duration));
577 
578  if ( CHAR0 == mutT('/') ) {
579  DurOk = 1;
580  CurrentPos++;
581  duration /= ReadLong(0);
582 
583  if ( !duration )
584  return DoError(22); // error: denominator expected
585  }
586 
587  if ( SepPos )
588  return CheckError(Note(Name, accedentials, octave, duration));
589 
590  if ( CHAR0 == mutT('.') && !DurOk )
591  return DoError(23); // error: dotting wihtout duration
592 
593  frac add = duration;
594 
595  while ( CHAR0 == mutT('.') && !SepPos ) {
596  add *= frac(1,2);
597 
598  duration += add;
599 
600  CurrentPos++;
601 
602  GetSep();
603  }
604 
605  return CheckError(Note(Name, accedentials, octave, duration));
606 }
#define CHAR0
Definition: GSP.cpp:214
Definition: Frac.h:60
mutString CurrentLine
Definition: GSP_File.cpp:38
static int octave
Definition: GSP.cpp:87
#define mutChar
Definition: Defs.h:83
int CheckError(int nr)
Definition: GSP.cpp:186
int Note(const mutString name, const mutString accedentials, int octave, frac duration)
Definition: GIS.cpp:712
size_t CurrentPos
Definition: GSP_File.cpp:42
int IsLetter(mutChar c)
Definition: GSP.cpp:120
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:167
#define mutString
Definition: Defs.h:84
static frac duration
Definition: GSP.cpp:91
#define mutT
Definition: Defs.h:77
int CharIn(mutChar c, const mutChar *s)
Definition: GSP.cpp:112
int GetSep()
Definition: GSP.cpp:227
#define SepPos
Definition: GSP.cpp:66
long ReadLong(int SignAllowed)
Definition: GSP.cpp:341
static mutString accedentials
Definition: GSP.cpp:89
int ReadParaNumber ( )

Definiert in Zeile 372 der Datei GSP.cpp.

Benutzt CHAR0, CheckError(), CurrentPos, GetSep(), minus, mutChar, mutT, NumberLength, ReadLong(), SepPos, TagParaInt() und TagParaReal().

Wird benutzt von DoParse().

373 {
374  long a = ReadLong(1);
375 
376  if ( SepPos || CHAR0 != mutT('.') ) // integer
377  return CheckError(TagParaInt(a));
378 
379  // real
380  CurrentPos++; // comma position
381 
382  GetSep();
383 
384  mutChar minus1 = minus;
385 
386  double r = (double)a;
387 
388  if ( SepPos ) // real without fraction part
389  return CheckError(TagParaReal(r));
390 
391  float b = (double) ReadLong(0);
392 
393  for (int i = 1; i <= NumberLength; i++)
394  b = b / 10;
395 
396  if ( minus1 ) b = -b;
397 
398  return CheckError(TagParaReal(r+b));
399 }
#define CHAR0
Definition: GSP.cpp:214
int NumberLength
Definition: GSP.cpp:75
bool minus
Definition: GSP.cpp:338
#define mutChar
Definition: Defs.h:83
int TagParaInt(long i)
Definition: GIS.cpp:750
int CheckError(int nr)
Definition: GSP.cpp:186
size_t CurrentPos
Definition: GSP_File.cpp:42
#define mutT
Definition: Defs.h:77
int GetSep()
Definition: GSP.cpp:227
int TagParaReal(double x)
Definition: GIS.cpp:765
#define SepPos
Definition: GSP.cpp:66
long ReadLong(int SignAllowed)
Definition: GSP.cpp:341
int ReadParaStr ( )

Definiert in Zeile 402 der Datei GSP.cpp.

Benutzt AddStr(), CHAR0, CHAR1, CheckError(), CurrentLine, CurrentPos, Eof, GetSep(), mutChar, mutString, mutT, NEW_LINE, ReadNewLine() und TagParaStr().

Wird benutzt von DoParse().

403 {
404 #ifdef WX
405  mutString s /*[GSP_MAX_LINE]*/ = mutT("");
406 #else
407  mutChar s[GSP_MAX_LINE] = "";
408 #endif
409  int i = 0;
410  CurrentPos++;
411 
412  while ( (CHAR0 != mutT('"') || CHAR1 == mutT('"')) && !Eof ) {
413  if ( !CHAR0 ) // new Line
414  {
415  ReadNewLine();
416  AddStr(s, i, NEW_LINE);
417  continue;
418  }
419  if ( CHAR0 == mutT('"') ) CurrentPos++;
420 
421 #ifdef WX
422  s += CurrentLine[CurrentPos++];
423 
424 #else
425  s[i++] = CurrentLine[CurrentPos++];
426 
427 #endif
428  }
429 
430  if ( CHAR0 == mutT('"') ) CurrentPos++;
431 
432 #ifndef WX
433  s[i] = 0;
434 
435 #endif
436  GetSep();
437 
438  return CheckError(TagParaStr(s));
439 }
int Eof
Definition: GSP_File.cpp:43
int ReadNewLine()
Definition: GSP_File.cpp:83
#define CHAR0
Definition: GSP.cpp:214
mutString CurrentLine
Definition: GSP_File.cpp:38
#define NEW_LINE
Definition: GSP.cpp:93
#define mutChar
Definition: Defs.h:83
int CheckError(int nr)
Definition: GSP.cpp:186
#define CHAR1
Definition: GSP.cpp:215
size_t CurrentPos
Definition: GSP_File.cpp:42
int TagParaStr(mutString s)
Definition: GIS.cpp:780
#define mutString
Definition: Defs.h:84
#define mutT
Definition: Defs.h:77
void AddStr(mutString &Target, int Pos, const mutString &Source)
Definition: GSP.cpp:104
int GetSep()
Definition: GSP.cpp:227
int ReadTag ( )

Definiert in Zeile 442 der Datei GSP.cpp.

Benutzt BeginParameter(), CHAR0, CheckError(), CurrentLine, CurrentPos, EndParameter(), GetSep(), GspError, IsLetter(), LastTag, mutChar, mutString, mutT, ParaMode, SepPos und Tag().

Wird benutzt von DoParse().

443 {
444  mutString Name/* [GSP_MAX_LINE] */ = mutT("");
445  mutChar i = 0;
446  LastTag = 2; // to have an indicator, wether the last token was a tag
447  CurrentPos++;
448  GetSep();
449 #ifdef WX
450  i = CurrentPos;
451 #endif
452 
453  while ( IsLetter(CHAR0) && !SepPos ) {
454 #ifdef WX
455  CurrentPos++;
456 #else
457  Name[i++] = CurrentLine[CurrentPos++];
458 #endif
459  GetSep();
460  }
461 
462 #ifdef WX
463  Name = CurrentLine (i,CurrentPos-i);
464 
465 #else
466  Name[i] = 0;
467 
468 #endif
469  if ( !GspError ) CheckError(Tag(Name));
470 
471  if ( CHAR0 == mutT('<') ) {
472  CurrentPos++;
473  GetSep();
474 
476 
477  ParaMode = 1;
478  }
479 
480  if ( CHAR0 == mutT('>') ) {
481  CurrentPos++;
482  GetSep();
483 
484  if ( !GspError ) CheckError(EndParameter());
485 
486  ParaMode = 0;
487  }
488 
489  return GspError;
490 }
#define CHAR0
Definition: GSP.cpp:214
int GspError
Definition: GSP.cpp:51
mutString CurrentLine
Definition: GSP_File.cpp:38
#define mutChar
Definition: Defs.h:83
char ParaMode
Definition: GSP.cpp:73
int CheckError(int nr)
Definition: GSP.cpp:186
size_t CurrentPos
Definition: GSP_File.cpp:42
int IsLetter(mutChar c)
Definition: GSP.cpp:120
int BeginParameter()
Definition: GIS.cpp:631
int Tag(const mutString tagName)
Definition: GIS.cpp:735
#define mutString
Definition: Defs.h:84
int EndParameter()
Definition: GIS.cpp:638
#define mutT
Definition: Defs.h:77
char LastTag
Definition: GSP.cpp:84
int GetSep()
Definition: GSP.cpp:227
#define SepPos
Definition: GSP.cpp:66
int GisWriteHead::ReadyForBoss ( )

Definiert in Zeile 1083 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::CloseCurrentToken(), Comma(), GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::Data, GTNote, GTSequenz, GisToken::Next, GisWriteHead::SingleToken und GisToken::Type().

Wird benutzt von GisWriteHead::CloseSubs().

1084 {
1085  CloseCurrentToken(0); //+ zu hart: bei Unknown muß keine Note eingefügt werden (zumindest nur beim ersten
1086  // put in Sequenz, when single token mode
1087 #ifdef GMN_STRICT
1088 
1089  if ( SingleToken && Data && &Data->Next != Cursor && Data->Type() != GTSequenz ) {
1090  char isSingle = 2;
1091  GisToken *Token = Data, LastToken = 0;
1092 
1093  while ( 1 ) {
1094  if ( Token->Type() == GTNote )
1095  if ( isSingle ) isSingle--;
1096 
1097  if ( Token->Next )
1098  Token = Token->Next;
1099  else
1100  break;
1101  }
1102 
1103  if ( !isSingle ) {
1104  GisToken **Comma = 0;
1105 
1106  if ( CommaAtEnd ) // get right position
1107  {
1108  Comma = &Data;
1109  GisToken **Comma = &Data;
1110 
1111  while ( (*Comma)->Next )
1112  Comma = &((*Comma)->Next);
1113 
1114  *Comma = 0;
1115  }
1116  Data = new GisSequenz(Data, " ");
1117 
1118  Cursor = &Data->Next;
1119 
1120  if ( Comma ) {
1121  *Cursor = *Comma;
1122  Cursor = &(*Comma)->Next;
1123  }
1124  }
1125  }
1126 
1127 #endif
1128  return 0;
1129 }
Definition: GIS.h:123
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:132
GisToken * Next
Definition: GIS.h:136
int Comma()
Definition: GIS.cpp:795
char SingleToken
Definition: GIS_Head.h:323
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320
virtual GisType Type() const
Definition: GIS.h:154
int CloseCurrentToken(char insertRest=1)
Definition: GIS_Head.cpp:1185
Definition: GIS.h:118
void mutabor::InputDeviceClass::RealtimePlay ( )
static

Play all input devices in realtime mode The the realtime mode allows interactive playing together with the integrated sequencer.

Definiert in Zeile 507 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::deviceList.

507  {
508  for (InputDeviceList::iterator i = deviceList.begin();
509  i != deviceList.end(); i++) {
510  (*i)->Play();
511  }
512  }
virtual void mutabor::BoxClass::CompileCallback::Refresh ( )
pure virtual

Implementiert in mutaborGUI::CompDlg und MyCompileCallback.

Wird benutzt von mutabor::BoxClass::Compile().

void mutabor::BoxClass::Register ( ChangedCallback callback)
inlineprotected

Definiert in Zeile 676 der Datei Box.h.

Benutzt mutabor::BoxClass::callbacks.

676  {
677  callbacks.push_back(callback);
678  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:658
void mutabor::InputDeviceClass::current_keys_type::rehash ( size_t  n)
inline

Definiert in Zeile 1065 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von midicmnInputDevice::midicmnInputDevice().

1065  {
1066  map.rehash(n);
1067  }
bool mutabor::BoxClass::Remove ( Route route)
virtual

remove a route

Definiert in Zeile 153 der Datei Box.cpp.

Benutzt DEBUGLOG, intrusive_ptr_get_refcount() und mutASSERT.

153  {
154  BoxLock lock(this);
155  DEBUGLOG(smartptr,_T("Route: %p (%d)"),
156  (void*)route.get(),
157  (int)intrusive_ptr_get_refcount(route.get()));
158  routeListType::iterator i =
159  std::find(routes.begin(),routes.end(),route);
160  bool found = (i != routes.end());
161  mutASSERT(found);
162  if (found) {
163  (*i).reset();// list can save some memory for reuse,
164  // but route must be deleted
165  routes.erase(i);
166  }
167  DEBUGLOG(smartptr,_T("Route; %p (%d)"),(void*)route.get(),
168  (int)intrusive_ptr_get_refcount(route.get()));
169  return found;
170  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
#define mutASSERT
Definition: Defs.h:222
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
routeListType routes
Definition: Box.h:651
template<class I , class O , class B >
bool mutabor::TRouteClass< I, O, B >::Remove ( OutputDevice out)
virtual

remove an existing output device

Definiert in Zeile 185 der Datei Route.cpp.

Benutzt UNREACHABLEC.

185  {
186  if (out != Out) {
187  UNREACHABLEC;
188  return false;
189  }
190  Out.reset();
191  return true;
192  }
#define UNREACHABLEC
Definition: mhDefs.h:148
OutputDevice Out
Definition: Route.h:460
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Remove ( InputDevice in)
virtual

remove an existing input device

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Remove ( Box b)
virtual

remov an existing box

virtual bool mutabor::Device::Remove ( Route route)
pure virtual
template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::Remove ( Route route)
virtual

remove a route

Implementiert mutabor::Device.

Definiert in Zeile 171 der Datei Device.cpp.

Benutzt DEBUGLOG, intrusive_ptr_get_refcount() und mutASSERT.

Wird benutzt von mutabor::CommonTypedDeviceAPI< T, P, L >::Replace().

171  {
172  DEBUGLOG(smartptr,_T("Route: %p (%d)"),
173  (void*)route.get(),
174  (int)intrusive_ptr_get_refcount(route.get()));
175  routeListType::iterator i =
176  std::find(routes.begin(),routes.end(),route);
177  bool found = (i != routes.end());
178  mutASSERT(found);
179  if (found) {
180  (*i).reset();// list can save some memory for reuse,
181  // but route must be deleted
182  routes.erase(i);
183  }
184  DEBUGLOG(smartptr,_T("Route; %p (%d)"),(void*)route.get(),
185  (int)intrusive_ptr_get_refcount(route.get()));
186  return found;
187  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
routeListType routes
Definition: Device.h:627
#define mutASSERT
Definition: Defs.h:222
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
void mutabor::InputDeviceClass::current_keys_type::remove ( int  key,
int  velocity,
int  unique_id,
Route R 
)
inline

Definiert in Zeile 1042 der Datei Device.h.

Benutzt DEBUGLOG und mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von mutabor::InputDeviceClass::DoNoteOff() und mutabor::InputDeviceClass::Panic().

1045  {
1046  std::pair<map_type::iterator, map_type::iterator> range =
1047  map.equal_range(entry(key,unique_id,velocity, R, NULL, NULL, NULL));
1048  if (range.first != map.end()) {
1049  map.erase(range.first);
1050  DEBUGLOG(routing,_T("(key = %d, channel = %lu, id = %lu)"),
1051  key,
1052  (unsigned long)R->get_session_id(),
1053  (unsigned long)unique_id);
1054  }
1055  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void mutabor::InputDeviceClass::current_keys_type::remove ( iterator  i)
inline

Definiert in Zeile 1057 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1057  {
1058  map.erase(i);
1059  }
void GisWriteHead::RemoveComma ( )

Definiert in Zeile 1131 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::Data und GisToken::Next.

Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().

1132 {
1133  if ( CommaAtEnd ) {
1134  GisToken **H = &Data;
1135 
1136  while ( &(*H)->Next != Cursor )
1137  H = &(*H)->Next;
1138 
1139  GisToken *SaveNext = (*H)->Next;
1140 
1141  delete *H;
1142 
1143  *H = SaveNext;
1144 
1145  Cursor = H;
1146  }
1147 }
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:132
GisToken * Next
Definition: GIS.h:136
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320
void mutabor::BoxClass::RemoveFromBoxList ( Box  dev)
staticprotected

Definiert in Zeile 296 der Datei Box.cpp.

Benutzt UNREACHABLECT.

Wird benutzt von mutabor::BoxClass::Destroy().

297  {
298  typename listtype::iterator i =
299  FindInBoxList(b);
300  if (i == boxList.end()) {
302  } else
303  boxList.erase(i);
304  }
static listtype boxList
Definition: Box.h:643
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:690
BoxListType listtype
Definition: Box.h:159
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::RemoveFromDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 314 der Datei Device.cpp.

Benutzt UNREACHABLECT.

315  {
316  typename listtype::iterator i =
317  FindInDeviceList(dev);
318  if (i == deviceList.end()) {
320  } else
321  deviceList.erase(i);
322  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:789
static listtype deviceList
Definition: Device.h:668
#define UNREACHABLECT(type)
Definition: mhDefs.h:147
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::RemoveFromRouteList ( Route  route)
staticprotected

Definiert in Zeile 296 der Datei Route.cpp.

Benutzt mutASSERT.

297  {
298  typename TRouteClass<I, O>::routeListType::iterator r =
299  std::find(routeList.begin(),
300  routeList.end(),
301  route.get());
302  mutASSERT(r != routeList.end());
303 
304  if (r != routeList.end()) {
305  routeList.erase(r);
306  }
307  }
static routeListType routeList
Definition: Route.h:469
#define mutASSERT
Definition: Defs.h:222
TagList* RemoveTag ( TagList **  list)

Definiert in Zeile 469 der Datei GIS_Head.cpp.

Benutzt TagListData::Next.

Wird benutzt von AddTag() und EndTag().

470 {
471  if ( *list ) {
472  TagList *TopTag = *list;
473  *list = TopTag->Next;
474  delete TopTag;
475  }
476 
477  return *list;
478 }
struct TagListData * Next
Definition: GIS_Head.h:148
bool mutabor::BoxClass::Replace ( Route oldRoute,
Route newRoute 
)
virtual

replace a route

Definiert in Zeile 140 der Datei Box.cpp.

Benutzt DEBUGLOG und mutASSERT.

140  {
141  DEBUGLOG(smartptr,_T("oldroute; %p, newroute; %p"),
142  (void*)oldroute.get(),(void*)newroute.get());
143  bool found = Remove(oldroute);
144  mutASSERT(found);
145  if (found)
146  Add(newroute);
147 
148  DEBUGLOG(smartptr,_T("oldroute; %p, newroute; %p"),
149  (void*)oldroute.get(),(void*)newroute.get());
150  return found;
151  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
virtual void Add(Route &route)
add a route
Definition: Box.cpp:126
#define mutASSERT
Definition: Defs.h:222
virtual bool Remove(Route &route)
remove a route
Definition: Box.cpp:153
template<class I , class O , class B >
bool mutabor::TRouteClass< I, O, B >::Replace ( OutputDevice olddev,
OutputDevice newdev 
)
virtual

replace an existing output device

Definiert in Zeile 154 der Datei Route.cpp.

Benutzt UNREACHABLEC.

155  {
156  if (Out != olddev) {
157  UNREACHABLEC;
158  return false;
159  }
160  Out = newdev;
161  return true;
162  }
#define UNREACHABLEC
Definition: mhDefs.h:148
OutputDevice Out
Definition: Route.h:460
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Replace ( InputDevice olddev,
InputDevice newdev 
)
virtual

replace an existing input device

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Replace ( Box oldbox,
Box newbox 
)
virtual

replace an existing box

virtual bool mutabor::Device::Replace ( Route oldRoute,
Route newRoute 
)
pure virtual
template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::Replace ( Route oldroute,
Route newroute 
)
virtual

replace a route

Implementiert mutabor::Device.

Definiert in Zeile 156 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< T, P, L >::Add(), DEBUGLOG, mutASSERT und mutabor::CommonTypedDeviceAPI< T, P, L >::Remove().

157  {
158  DEBUGLOG(smartptr,_T("oldroute; %p, newroute; %p"),
159  (void*)oldroute.get(),(void*)newroute.get());
160  bool found = CommonTypedDeviceAPI<T,P,L>::Remove(oldroute);
161  mutASSERT(found);
162  if (found)
164 
165  DEBUGLOG(smartptr,_T("oldroute; %p, newroute; %p"),
166  (void*)oldroute.get(),(void*)newroute.get());
167  return found;
168  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
virtual bool Remove(Route &route)
remove a route
Definition: Device.cpp:171
virtual void Add(Route &route)
add a route
Definition: Device.cpp:142
#define mutASSERT
Definition: Defs.h:222
void mutabor::ChannelData::Reset ( )
inline

Definiert in Zeile 125 der Datei Device.h.

Benutzt mutabor::ChannelData::bank_coarse, mutabor::ChannelData::bank_fine, mutabor::ChannelData::bend, mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed, mutabor::ChannelData::first_unchanged, mutabor::ChannelData::looped und mutabor::ChannelData::Sound.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Open() und mutabor::CommonMidiOutput< T, D >::do_Panic().

126  {
127  for (controller_vector::iterator i = controller.begin();
128  i != controller.end();
129  ++i) *i = -1;
130  for (controller_vector::iterator i = controller_changed.begin();
131  i != controller_changed.end();
132  ++i) *i = -1;
133  first_unchanged = 0;
134  looped = false;
135  Sound = -1;
136  bank_coarse = -1;
137  bank_fine = -1;
138  bend = 0;
139  }
size_t first_unchanged
Definition: Device.h:462
controller_vector controller
Definition: Device.h:460
uint8_t bank_fine
Definition: Device.h:467
controller_vector controller_changed
Definition: Device.h:461
uint8_t bank_coarse
Definition: Device.h:466
void mutabor::BoxClass::Reset ( )
virtual

Definiert in Zeile 383 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_reset_box().

383  {
385 #if 0
386  hidden::mutabor_reset_action_trace(box);
387 #endif
388  }
void mutabor_reset_box(struct mutabor_box_type *box)
Definition: box.cpp:100
struct mutabor_box_type * box
Definition: Box.h:648
void mutabor::InputDeviceClass::ResumeKeys ( )
Noch zu erledigen:
move implementation to midicmn and Co.

Definiert in Zeile 383 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::current_keys_type::begin(), mutabor::InputDeviceClass::current_keys, DEBUGLOG, mutabor::InputDeviceClass::current_keys_type::end(), mutabor::ChannelData::get_controller(), mutabor::midi::get_holds(), mutabor::InputDeviceClass::GetChannelData() und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::CommonFileInputDevice::ThreadPlay().

383  {
384  ScopedLock lock(write_lock);
385 
386  DEBUGLOG(routing,_T(""));
388  size_t j = 0;
389  for (i = current_keys.begin();i!= current_keys.end();i++) {
390  DEBUGLOG(routing,_T("(key = %d, channel = %lu, id = %lu)"),
391  i->key,
392  (unsigned long)i->route->get_session_id(),
393  (unsigned long)i->unique_id);
394  for (const int * k = midi::get_holds();
395  *k >= 0; k++) {
396  i->route->Controller(*k,
398  i->unique_id);
399  }
400  i->route->NoteOn(i->key,
401  i->velocity,
402  i->unique_id,
403  *i->settings,
404  i->userdata);
405  j++;
406  }
407  DEBUGLOG(routing,_T("revived %lu keys"),(unsigned long)j);
408  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
wxMutexLocker ScopedLock
Definition: thread.h:57
current_keys_type current_keys
Definition: Device.h:1244
int get_controller(size_t number) const
Definition: Device.h:298
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:400
virtual ChannelData & GetChannelData(const current_keys_type::entry &key) const =0
mutabor::RouteFactory::RouteFactory ( )

Creates a route Factory.

Constructor. Should be overridden if classes inhert from Route.

Definiert in Zeile 523 der Datei Route.cpp.

Benutzt mutabor::RouteFactory::factory.

523  {
524  if (factory) {
525 // UNREACHABLEC;
526  boost::throw_exception( FactoryAlreadySet(factory,this));
527  /*
528  delete factory;
529  factory = this;
530  */
531 
532  } else factory = this;
533  }
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:740
mutabor::RouteFactory::RouteFactoryNotSet::RouteFactoryNotSet ( )
inline

Definiert in Zeile 577 der Datei Route.h.

577 :logic_error(gettext_noop("Trying to create a route without the correct factory. You (the programmer) must create one!")) {}
#define gettext_noop(a)
Definition: Defs.h:232
void mutabor::Device::runtime_error ( int  type,
mutString  message,
  ... 
)
inline

Process an error message.

Definiert in Zeile 552 der Datei Device.h.

Wird benutzt von mutabor::CommonFileInputDevice::exception_error(), mutabor::MidiPortOutputProvider::Open() und mutabor::InputGis::Open().

552  {
553  va_list args;
554  va_start(args,message);
555  runtime_error(type,message,args);
556  }
void runtime_error(int type, mutString message,...)
Process an error message.
Definition: Device.h:552
void mutabor::Device::runtime_error ( int  type,
const mutStringRef  message,
va_list &  args 
)
virtual

Process an error message (doing the real work)

Definiert in Zeile 85 der Datei Device.cpp.

Benutzt mutChar, mutPrintf(), mutString, mutVPrintf() und mutabor::to_string().

85  {
86 #if wxCHECK_VERSION(2,9,0)
88 #else
89  mutString t = mutString::FromUTF8(mutabor::to_string((mutabor::error_type)type));
90 #endif
91  mutPrintf(_T("%s: "),(const mutChar *)(t));
92  mutVPrintf(message,args);
93  }
#define mutChar
Definition: Defs.h:83
#define mutString
Definition: Defs.h:84
void mutPrintf(const wxChar *format,...)
Definition: Defs.h:108
const char * to_string(error_type type)
Definition: Box.h:104
void mutVPrintf(const wxChar *format, va_list args)
Definition: Defs.h:105
void mutabor::BoxClass::runtime_error ( error_type  type,
const char *  message 
)
virtual

Process an error message (doing the real work)

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 773 der Datei Box.cpp.

Benutzt mutabor::to_string().

Wird benutzt von error_callback() und mutabor::error_callback().

773  {
774  fprintf(stderr,"%s: %s\n",to_string(type),message);
775  }
const char * to_string(error_type type)
Definition: Box.h:104
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Save ( tree_storage config)
virtual

Write the route settings into a tree based configuration.

config (tree_storage &) configuration where the route settings will be stored

Definiert in Zeile 71 der Datei Route.cpp.

Benutzt mutabor::tree_storage::GetPath(), mutASSERT und mutabor::tree_storage::Write().

72  {
73 #ifdef DEBUG
74  wxString oldpath = config.GetPath();
75 #endif
76  config.Write(_T("Input Device"), inputid);
77  config.Write(_T("Output Device"), outputid);
78  config.Write(_T("Box"), boxid);
79  config.Write(_T("Active"), Active);
80  if (In)
81  In->Save(config,this);
82  if (Out)
83  Out->Save(config,this);
84  mutASSERT(oldpath == config.GetPath());
85  }
InputDevice In
Definition: Route.h:461
#define mutASSERT
Definition: Defs.h:222
OutputDevice Out
Definition: Route.h:460
void mutabor::BoxClass::Save ( tree_storage config)
virtual

Save current device settings in a tree storage.

config (tree_storage) storage class, where the data will be saved.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 112 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::Save().

112  {
113  }
void mutabor::BoxClass::Save ( tree_storage config,
const RouteClass route 
)
virtual

Save route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function saves them in a tree storage. config (tree_storage *) Storage class, where the data will be saved. route (Route) Route whos data shall be saved.

Definiert in Zeile 115 der Datei Box.cpp.

116  {
117  }
virtual void mutabor::Device::Save ( tree_storage config)
pure virtual

Save current device settings in a tree storage.

config (tree_storage) storage class, where the data will be saved.

Implementiert in mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::CommonFileInputDevice, midicmnInputDevice, mutabor::OutputGis, midicmnOutputDevice und mutabor::CommonFileOutputDevice.

virtual void mutabor::Device::Save ( tree_storage config,
const RouteClass route 
)
pure virtual

Save route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function saves them in a tree storage. config (tree_storage *) Storage class, where the data will be saved. route (Route) Route whos data shall be saved.

Implementiert in mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, midicmnInputDevice, testCommonFileDeviceTimer, testCommonFileDeviceTimer, mutabor::OutputGis und midicmnOutputDevice.

void mutabor::BoxFactory::SaveBoxes ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 935 der Datei Box.cpp.

Benutzt mutabor::BoxClass::GetBoxList(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent() und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

936  {
937 #ifdef DEBUG
938  wxString oldpath = config.GetPath();
939 #endif
940  config.toLeaf(_T("Boxes"));
941 
942  const BoxListType & list =
944  for (BoxListType::const_iterator b = list.begin();
945  b != list.end(); b++) {
946  int id = (*b)->get_routefile_id();
947  config.toLeaf(_T("Box"), id);
948  config.Write(_T("Type"), (*b)->GetType() );
949  config.Write(_T("Type Name"),(*b)->GetTypeName());
950  (*b) -> Save (config);
951  config.toParent();
952  }
953 
954  config.toParent();
955  mutASSERT(oldpath == config.GetPath());
956  }
static const listtype & GetBoxList()
Definition: Box.h:262
std::vector< Box > BoxListType
Definition: Box.h:120
#define mutASSERT
Definition: Defs.h:222
void mutabor::DeviceFactory::SaveInputDevices ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 628 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent(), TRACE und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

629  {
630 #ifdef DEBUG
631  wxString oldpath = config.GetPath();
632 #endif
633  config.toLeaf(_T("InputDevices"));
634 
635 
636  TRACE;
638  for (InputDeviceList::const_iterator in = list.begin();
639  in != list.end(); in++) {
640  config.toLeaf(_T("Device"),(*in)->get_routefile_id());
641  config.Write(_T("Type"),(*in)->GetType());
642  config.Write(_T("Type Name"),(*in)->GetTypeName());
643  (*in) -> Save (config);
644  config.toParent();
645  }
646  TRACE;
647 
648  config.toParent();
649  mutASSERT(oldpath == config.GetPath());
650  }
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:970
#define TRACE
Definition: mutDebug.h:150
#define mutASSERT
Definition: Defs.h:222
static const listtype & GetDeviceList()
Definition: Device.h:726
void mutabor::DeviceFactory::SaveOutputDevices ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 572 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent() und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

573  {
574 #ifdef DEBUG
575  wxString oldpath = config.GetPath();
576 #endif
577  config.toLeaf(_T("OutputDevices"));
578 
579  const OutputDeviceList & list =
581  for (OutputDeviceList::const_iterator out = list.begin();
582  out != list.end(); out++) {
583  config.toLeaf(_T("Device"),
584  static_cast<Device *>((*out).get())->get_routefile_id());
585  config.Write(_T("Type"),(*out)->GetType());
586  config.Write(_T("Type Name"),(*out)->GetTypeName());
587  (*out) -> Save (config);
588  config.toParent();
589  }
590 
591  config.toParent();
592  mutASSERT(oldpath == config.GetPath());
593  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:811
#define mutASSERT
Definition: Defs.h:222
void SavePos ( )

Definiert in Zeile 204 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, GspCurrentLineNr, mutCopyIntoString, PossibleErrorLine, PossibleErrorLineNr und PossibleErrorPos.

Wird benutzt von DoParse().

205 {
209 }
mutString CurrentLine
Definition: GSP_File.cpp:38
mutString PossibleErrorLine
Definition: GSP.cpp:56
int PossibleErrorLineNr
Definition: GSP.cpp:54
size_t CurrentPos
Definition: GSP_File.cpp:42
#define mutCopyIntoString(left, right)
Definition: Defs.h:91
int PossibleErrorPos
Definition: GSP.cpp:55
int GspCurrentLineNr
Definition: GSP.cpp:47
void compat30::SaveRoutes ( mutStringRef  )

write the routes to the given string

Parameter
configstring to be written to

reimplement WriteRoutes

Definiert in Zeile 335 der Datei RouteCompat.cpp.

Benutzt _, DEBUGLOG2, mutabor::DTGis, mutabor::DTMidiFile, mutabor::DTMidiPort, mutabor::DTNotSet, mutabor::DTUnknown, mutabor::Device::get_routefile_id(), mutabor::CommonMidiOutput< T, D >::GetBendingRange(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::InitializeIds(), mutabor::NoBox, mutabor::RTName, STUB und UNREACHABLE.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteSave().

336  {
338  STUB;
339 
340  RouteClass::InitializeIds();
341 
342  // clean config
343  config = wxEmptyString;
344  // remove unused output devices
345  OutputDevice Out;
346  InputDevice In;
347 
348  // Output schreiben
349  config << _T("OUTPUT\n");
350 
351  const OutputDeviceList & OutDevices =
352  OutputDeviceClass::GetDeviceList();
353 
354  for ( OutputDeviceList::const_iterator Out = OutDevices.begin();
355  Out != OutDevices.end(); Out++) {
356 
357  wxString sName = (*Out)->GetName();
358 
359  if ( sName.Find(_T(" ")) )
360  sName.Prepend(_T("\"")) << _T("\"");
361 
362  switch ( (*Out)->GetType() ) {
363 
364  case DTUnknown:
365  config << wxString::Format(_T(" UNKNOWN %s\n"),
366  sName.c_str());
367 
368  break;
369 
370  case DTMidiPort:
371  {
372  OutputMidiPort * MidiOut =
373  dynamic_cast <OutputMidiPort *>((*Out).get());
374  if (MidiOut)
375  config << wxString::Format(_T(" MIDIPORT %s %d %d\n"),
376  sName.c_str(),
377  (*Out)->get_routefile_id(),
378  MidiOut->GetBendingRange());
379  else
380  UNREACHABLE;
381  }
382  break;
383 
384  case DTMidiFile:
385  {
386  OutputMidiFile * MidiFile =
387  dynamic_cast <OutputMidiFile *>((*Out).get());
388  if (MidiFile)
389  config << wxString::Format(_T(" MIDIFILE %s %d %d\n"),
390  sName.c_str(),
391  0,
392  MidiFile->GetBendingRange());
393  else
394  UNREACHABLE;
395  }
396  break;
397 
398  case DTGis:
399  config << wxString::Format(_T(" GMN %s\n"), sName.c_str());
400 
401  break;
402 
403  case DTNotSet:
404  wxLogWarning(_("Device found, but device type not set."));
405  }
406  }
407 
408  DEBUGLOG2(routing,_T("WriteConfig: %s"), (config.c_str()));
409 
410  // Input schreiben
411  config << _T("INPUT\n");
412 
413  const InputDeviceList & InDevices =
414  InputDeviceClass::GetDeviceList();
415  for ( InputDeviceList::const_iterator In = InDevices.begin();
416  In != InDevices.end(); In++) {
417  wxString sName = (*In)->GetName();
418 
419  if ( sName.Find(_T(" ")) )
420  sName.Prepend(_T("\"")) << _T("\"");
421 
422  switch ( (*In)->GetType() ) {
423 
424  case DTUnknown:
425  config << wxString::Format(_T(" UNKNOWN %s\n"), sName.c_str());
426 
427  break;
428 
429  case DTGis:
430  config << wxString::Format(_T(" GMN %s\n"), sName.c_str());
431 
432  break;
433 
434  case DTMidiPort:
435  config << wxString::Format(_T(" MIDIPORT %s %d\n"), sName.c_str(),
436  static_cast<InputMidiPort *>((*In).get())->GetDevId());
437 
438  break;
439 
440  case DTMidiFile:
441  config << wxString::Format(_T(" MIDIFILE %s\n"), sName.c_str());
442 
443  break;
444 
445  case DTNotSet:
446  wxLogWarning(_("Device found but device type not set."));
447 
448  break;
449  }
450 
451  // Routen schreiben
452  routeListType & routes = (*In)->GetRoutes();
453  for (routeListType::iterator R = routes.begin();
454  R!= routes.end(); R++) {
455  Device * dev = (*R)->GetOutputDevice().get();
456  int OutNr;
457  OutNr = (dev ? dev->get_routefile_id(): -1);
458  config << wxT(" ") << RTName[(*R)->GetType()] <<
459  wxString::Format(_T(" %d %d %d %d %d %d %d %d\n"),
460  (*R)->GetInputFrom(),
461  (*R)->GetInputTo(),
462  ((*R)->GetBox()?
463  (*R)->GetBox()->get_routefile_id():
464  NoBox),
465  (*R)->GetActive(),
466  OutNr,
467  (*R)->GetOutputFrom(),
468  (*R)->GetOutputTo(),
469  (*R)->OutputAvoidDrumChannel() ? 1 : 0);
470  }
471  }
472 
473  DEBUGLOG2(routing,_T("WriteRoutes: %s"), (config.c_str()));
474  }
int get_routefile_id() const
Definition: Device.h:585
#define UNREACHABLE
Definition: mhDefs.h:146
#define STUB
functions or code that has to be written – simple function
Definition: mhDefs.h:140
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:811
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:809
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:970
#define _
Definition: Execute.cpp:57
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:544
const mutString RTName[]
Definition: Route.cpp:49
int GetBendingRange() const
Definition: midicmn.h:559
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::SaveRoutes ( tree_storage config)
static

Save the current routes in a tree storage.

This function saves all routes in a tree based storage. config (tree_storage *) storage driver to use for saving.

Definiert in Zeile 227 der Datei Route.cpp.

Benutzt mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

228  {
229 #ifdef DEBUG
230  wxString oldpath = config.GetPath();
231 #endif
232  config.toLeaf(_T("Routes"));
233 
234  for (typename TRouteClass<I, O>::routeListType::iterator
235  route = routeList.begin();
236  route != routeList.end(); route++) {
237  config.toLeaf(_T("Route"),(*route)->get_routefile_id());
238  (*route) -> Save (config);
239  config.toParent();
240  }
241 
242  config.toParent();
243  mutASSERT(oldpath == config.GetPath());
244  }
static routeListType routeList
Definition: Route.h:469
virtual void Save(tree_storage &config)
Write the route settings into a tree based configuration.
Definition: Route.cpp:71
#define mutASSERT
Definition: Defs.h:222
static void mutabor::RouteFactory::SaveRoutes ( tree_storage config)
inlinestatic

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 664 der Datei Route.h.

Benutzt mutabor::RouteFactory::DoSaveRoutes() und mutabor::RouteFactory::factory.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteSave() und SaveRoutes().

664  {
665  if (factory)
666  factory->DoSaveRoutes(config);
667  else
668  boost::throw_exception( RouteFactoryNotSet());
669  // UNREACHABLECT(RouteFactory);
670  }
virtual void DoSaveRoutes(tree_storage &config) const
write the routes to the configuration
Definition: Route.cpp:575
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:740
mutabor::ScopedBox::ScopedBox ( BoxClass rhs)
inline

Definiert in Zeile 800 der Datei Box.h.

800 :Box(rhs) {}
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
mutabor::ScopedBox::ScopedBox ( const Box rhs)
inline

Definiert in Zeile 801 der Datei Box.h.

801 :Box(rhs) {}
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:118
size_t SepPos ( )
inline

Definiert in Zeile 60 der Datei GSP.cpp.

Benutzt Sep.

61 {
62  size_t a = (Sep.Len());
63  return a;
64 }
mutString Sep
Definition: GSP.cpp:59
void mutabor::ChannelData::set_bend ( int  b)
inline
mutabor::BoxClass::set_callback::set_callback ( BoxClass b,
CompileCallback callback 
)
inline

Definiert in Zeile 662 der Datei Box.h.

Benutzt mutabor::BoxClass::set_callback::box und mutabor::BoxClass::current_compile_callback.

663  :box(b) {
664  box->current_compile_callback = callback;
665  }
CompileCallback * current_compile_callback
Definition: Box.h:670
int mutabor::ChannelData::set_controller ( size_t  number,
int8_t  data 
)
inline

Definiert in Zeile 153 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed, mutabor::midi::DATA_BUTTON_DECREMENT, mutabor::midi::DATA_BUTTON_INCREMENT, mutabor::midi::DATA_ENTRY_COARSE, mutabor::midi::DATA_ENTRY_FINE, mutabor::ChannelData::data_is_rpn, DEBUGLOG, mutabor::midi::FIRST_NRPN, mutabor::midi::FIRST_RPN, mutabor::ChannelData::first_unchanged, mutabor::ChannelData::looped, mutabor::midi::NON_REGISTERED_PARAMETER_COARSE, mutabor::midi::NON_REGISTERED_PARAMETER_FINE, mutabor::midi::REGISTERED_PARAMETER_COARSE und mutabor::midi::REGISTERED_PARAMETER_FINE.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange(), mutabor::CommonMidiOutput< T, D >::do_Controller(), mutabor::CommonMidiOutput< T, D >::do_NoteOn(), mutabor::CommonMidiOutput< T, D >::do_Open(), mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_SendBendingRange(), mutabor::CommonMidiOutput< T, D >::do_UpdateControllers() und mutabor::ChannelData::MidiReset().

153  {
154 
155  if (controller.size() <= number)
156  controller.resize(number +1);
157  int retval = controller[number];
158  int param = -1;
159  DEBUGLOG(midiio,_T("ctrl: %d, %d => %d"),(int)number,(int)retval,(int)data);
160  controller[number] = data;
161 
162  // we allow to set a controller to an udefined state.
163  if (data < 0) return retval;
164 
165  switch (number) {
168  data_is_rpn = false;
169  break;
172  data_is_rpn = true;
173  break;
178  if (!data_is_rpn
183  param = midi::FIRST_NRPN
186  } else if (data_is_rpn
191  param = midi::FIRST_RPN
194  }
195  if (param != -1) {
196  if (controller.size() <= (size_t) param)
197  controller.resize(param+1);
198  switch (number) {
200  controller[param]++;
201  break;
203  controller[param]--;
204  break;
207  int value = (controller[midi::DATA_ENTRY_COARSE]) << 8
209  if (!(value & 0x8080))
210  controller[param] = value;
211  }
212  }
213  break;
214  }
215 
216 
217 
218  bool found = false;
219  size_t index;
220  for (size_t i = 0; i < (looped?controller.size():first_unchanged);i++) {
221  if (controller_changed[i] == (int)number) {
222  controller_vector :: iterator beg = controller_changed.begin();
223  std::rotate(beg + i,beg+i+1 ,beg +first_unchanged);
224  found = true;
225  index = first_unchanged-1;
226  break;
227  }
228  }
229  if (!found)
230  index = first_unchanged++;
231 
232  controller_changed[index] = (param == -1 ? number : param);
233 
234  return retval;
235  }
size_t first_unchanged
Definition: Device.h:462
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
controller_vector controller
Definition: Device.h:460
controller_vector controller_changed
Definition: Device.h:461
void mutabor::BoxClass::set_routefile_id ( int  id)
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 99 der Datei Box.cpp.

Benutzt mutASSERT und mutabor::NewBox.

Wird benutzt von mutabor::BoxClass::BoxClass().

99  {
100  BoxLock lock(this);
101 
102  if (id == NewBox) {
103  id = nextboxid++;
104  } else if (id >= nextboxid)
105  nextboxid = id + 1;
106  routefile_id = id;
107  mutASSERT(box);
108  if (!box) return;
109  box->id = routefile_id;
110  }
struct mutabor_box_type * box
Definition: Box.h:648
#define mutASSERT
Definition: Defs.h:222
static int nextboxid
Definition: Box.h:644
int routefile_id
Definition: Box.h:650
void mutabor::Device::set_routefile_id ( int  id)
inlineprotected

Definiert in Zeile 645 der Datei Device.h.

Benutzt mutabor::Device::routefile_id.

Wird benutzt von mutabor::DeviceFactory::LoadInputDevices().

645  {
646  routefile_id = id;
647  }
int routefile_id
Definition: Device.h:622
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetActive ( bool  active)
inline

Definiert in Zeile 319 der Datei Route.h.

319  {
320  Active = active;
321  }
virtual void mutabor::BoxClass::ChangedCallback::SetBox ( Box b)
inlinevirtual

Definiert in Zeile 147 der Datei Box.h.

Benutzt mutabor::BoxClass::ChangedCallback::box.

147  {
148  if (b == box) return;
149  if (box)
150  box->Unregister(this);
151  box = b;
152  if (box)
153  box->Register(this);
154  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::SetBox ( Box  b)
inlinevirtual

Definiert in Zeile 327 der Datei Route.h.

327  {
328  box = b;
329  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetBoxId ( int  Id)
inline

Definiert in Zeile 299 der Datei Route.h.

299  {
300  boxid = Id;
301  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetDeviceId ( int  Id,
 
)
inline

Definiert in Zeile 292 der Datei Route.h.

292  {
293  inputid = Id;
294  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetDeviceId ( int  Id,
 
)
inline

Definiert in Zeile 296 der Datei Route.h.

296  {
297  outputid = Id;
298  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetInputFrom ( int  i)
inline

Definiert in Zeile 347 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load() und mutabor::InputMidiFile::Load().

347  {
348  IFrom = i;
349  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetInputTo ( int  i)
inline

Definiert in Zeile 363 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load() und mutabor::InputMidiFile::Load().

363  {
364  ITo = i;
365  }
virtual void mutabor::BoxClass::CompileCallback::SetLine ( int  number)
pure virtual
void mutabor::BoxClass::SetLogic ( Box  b)
inline

Definiert in Zeile 537 der Datei Box.h.

Benutzt mutabor::BoxClass::box, mutabor::hidden::mutabor_box_type::file und mutabor::hidden::mutabor_set_logic().

Wird benutzt von mutaborGUI::BoxData::BoxData().

537  {
539  }
void mutabor_set_logic(struct mutabor_box_type *box, struct mutabor_logic_parsed *logic)
Definition: box.cpp:50
struct mutabor_box_type * box
Definition: Box.h:648
struct mutabor_logic_parsed * file
Definition: box.h:180
virtual void mutabor::BoxClass::CompileCallback::SetMessage ( mutString  message)
pure virtual

Implementiert in MyCompileCallback.

Wird benutzt von mutabor::BoxClass::Compile().

virtual void mutabor::Device::SetMode ( MutaborModeType  m)
inlinevirtual

Definiert in Zeile 545 der Datei Device.h.

Benutzt mutabor::Device::Mode.

545 { Mode = m; }
enum MutaborModeType Mode
Definition: Device.h:626
virtual void mutabor::Device::SetName ( const wxString &  s)
inlinevirtual

Erneute Implementation in mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 566 der Datei Device.h.

Benutzt mutabor::Device::Name.

566  {
567  Name = s;
568  }
mutString Name
Definition: Device.h:623
int ChordNote::SetNoteOff ( GisToken note)

Definiert in Zeile 847 der Datei GIS_Head.cpp.

Benutzt ChordNote::Boss, CmpNote(), CNNoteOn, ChordNote::CurrentTime, ChordNote::Cursor, ChordNote::Next, GisWriteHead::NoteOn, ChordNote::SetNoteOff() und ChordNote::Status.

Wird benutzt von GisWriteHead::ProceedGis() und ChordNote::SetNoteOff().

848 {
849 
850  if ( (Status & CNNoteOn) && CmpNote(*Cursor, note) )
851  {
852  ((GisNote*)*Cursor)->Duration = CurrentTime;
853  Cursor = &((*Cursor)->Next);
854  CurrentTime = frac(0,1);
855  Status -= CNNoteOn;
856  Boss->NoteOn--;
857  return 1;
858  }
859 
860  if ( Next ) return Next->SetNoteOff(note);
861 
862  return 0;
863 }
GisToken ** Cursor
Definition: GIS_Head.h:437
Definition: Frac.h:60
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
char NoteOn
Definition: GIS_Head.h:326
frac CurrentTime
Definition: GIS_Head.h:439
ChordNote * Next
Definition: GIS_Head.h:435
Definition: GIS.h:457
int CmpNote(GisToken *note1, GisToken *note2)
Definition: GIS_Head.cpp:778
#define CNNoteOn
Definition: GIS_Head.h:425
int SetNoteOff(GisToken *note)
Definition: GIS_Head.cpp:847
void ChordNote::SetNoteOn ( GisToken note)

Definiert in Zeile 839 der Datei GIS_Head.cpp.

Benutzt ChordNote::Boss, CNNoteOn, ChordNote::Cursor, NOTE, GisWriteHead::NoteOn und ChordNote::Status.

Wird benutzt von GisWriteHead::ProceedGis().

840 {
841  *Cursor = new GisNote(NOTE->Name, NOTE->Accedentials, NOTE->Octave,
842  frac(0, 1), NOTE->Sep, 0);
843  Status += CNNoteOn;
844  Boss->NoteOn++;
845 }
GisToken ** Cursor
Definition: GIS_Head.h:437
#define NOTE
Definition: GIS_Head.cpp:838
Definition: Frac.h:60
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
char NoteOn
Definition: GIS_Head.h:326
Definition: GIS.h:457
#define CNNoteOn
Definition: GIS_Head.h:425
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetOutputFrom ( int  o)
inline

Definiert in Zeile 355 der Datei Route.h.

Wird benutzt von mutabor::OutputMidiPort::Load() und mutabor::OutputMidiFile::Load().

355  {
356  OFrom = o;
357  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetOutputTo ( int  o)
inline

Definiert in Zeile 371 der Datei Route.h.

Wird benutzt von mutabor::OutputMidiPort::Load() und mutabor::OutputMidiFile::Load().

371  {
372  OTo = o;
373  }
virtual void mutabor::BoxClass::CompileCallback::SetStatus ( mutString  status)
pure virtual

Implementiert in MyCompileCallback.

Wird benutzt von mutabor::BoxClass::Compile().

virtual void mutabor::BoxClass::CompileCallback::SetStatus ( int  logics,
int  tones,
int  tunings,
int  tone_systems,
int  intervals,
int  characters 
)
pure virtual

Implementiert in MyCompileCallback und mutaborGUI::CompDlg.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetType ( RouteType  type)
inline

Definiert in Zeile 335 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load().

335  {
336  Type = type;
337  }
RouteType Type
Definition: Route.h:477
void CommonMidiOutputTest::setUp ( )

Definiert in Zeile 37 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), CommonMidiOutputTest::guard, CommonMidiOutputTest::out, CommonMidiOutputTest::route und mutabor::CurrentTimer::UseRealtime().

38 {
39 // change DEBUGA to DEBUG in case you need the debug output
40 #ifdef DEBUG
41 // debugFlags::flags.timer = true;
42 // debugFlags::flags.midiio = true;
43 #endif
44  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
45  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
46  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
47  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
50  connect(route, box);
51 
53  out = new midicmnOutputDevice(_T("Test"));
54  guard = out;
55 
57  route->SetOutputFrom (0);
58  route->SetOutputTo (15);
59  route->OutputAvoidDrumChannel (true);
60 }
mutabor::Route route
Definition: midicmnTest.h:132
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
midicmnOutputDevice * out
Definition: midicmnTest.h:131
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
mutabor::Box box
Definition: midicmnTest.h:133
mutabor::OutputDevice guard
Definition: midicmnTest.h:130
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:592
void CommonMidiInputTest::setUp ( )

Definiert in Zeile 544 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), CommonMidiInputTest::guard, CommonMidiInputTest::in, CommonMidiInputTest::out, CommonMidiInputTest::outguard, CommonMidiInputTest::route und mutabor::CurrentTimer::UseRealtime().

545 {
546 // change DEBUGA to DEBUG in case you need the debug input
547 #ifdef DEBUG
548 // debugFlags::flags.timer = true;
549 // debugFlags::flags.midiio = true;
550 #endif
551  std::clog << "Running setUp()" << std::endl;
552 
553  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
554  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
555  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
556  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
557 
560  connect(route, box);
561 
563  in = new midicmnInputDevice(_T("Test"));
564  guard = in;
565  out = new midicmnOutputDevice(_T("Test"));
566  outguard = out;
567 
570  route->SetOutputFrom (0);
571  route->SetOutputTo (15);
572  route->OutputAvoidDrumChannel (true);
573 }
midicmnInputDevice * in
Definition: midicmnTest.h:210
mutabor::OutputDevice outguard
Definition: midicmnTest.h:208
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
mutabor::InputDevice guard
Definition: midicmnTest.h:207
midicmnOutputDevice * out
Definition: midicmnTest.h:209
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
mutabor::Route route
Definition: midicmnTest.h:211
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: midicmnTest.h:212
static Route Create()
Creates a generic route.
Definition: Route.h:592
void OutputMidiFileTest::setUp ( )

Definiert in Zeile 4554 der Datei DevMidFTest.cpp.

Benutzt OutputMidiFileTest::box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::DeviceFactory::CreateOutput(), mutabor::CurrentTime, mutabor::DTMidiFile, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), OutputMidiFileTest::guard, OutputMidiFileTest::out, OutputMidiFileTest::route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), mutabor::OutputMidiFile::SetName() und mutabor::CurrentTimer::UseRealtime().

4555 {
4556 // change DEBUGA to DEBUG in case you need the debug output
4557 #ifdef DEBUGA
4558 // debugFlags::flags.timer = true;
4559 // debugFlags::flags.midiio = true;
4560 // debugFlags::flags.midifile = true;
4561 #else
4562 #ifdef DEBUG
4563 // debugFlags::flags.timer = false;
4564 // debugFlags::flags.midiio = false;
4565 // debugFlags::flags.midifile = false;
4566 #endif
4567 #endif
4568 // std::clog << "Running setUp()" << std::endl;
4569 
4570  // input device is already configured
4571  CPPUNIT_ASSERT(!mutabor::InputDeviceClass::GetDeviceList().size() == 1);
4572  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
4573  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
4574  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
4575 
4578  connect(route, box);
4579 
4582  out = static_cast<mutabor::OutputMidiFile *>(guard.get());
4583  out->SetName(_T("test_output.mid"));
4584  out->SetBendingRange(2);
4585  //out = new midicmnOutputDevice(3,_T("Test"));
4586 
4587  connect(route, guard);
4588  route->SetOutputFrom (0);
4589  route->SetOutputTo (15);
4590  route->OutputAvoidDrumChannel (true);
4591 }
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
mutabor::OutputDevice guard
Definition: DevMidFTest.h:228
static OutputDevice CreateOutput(int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1279
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:229
mutabor::Route route
Definition: DevMidFTest.h:230
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
void SetBendingRange(int br)
Definition: midicmn.h:550
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: DevMidFTest.h:231
virtual void SetName(const wxString &s)
Definition: DevMidF.h:601
static Route Create()
Creates a generic route.
Definition: Route.h:592
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::setUserData ( void *  data)
protectedvirtual

Definiert in Zeile 128 der Datei Route.cpp.

129  {
130  userdata = data;
131  }
virtual void mutabor::Device::setUserData ( void *  data)
inlineprotectedvirtual

Definiert in Zeile 640 der Datei Device.h.

Benutzt mutabor::Device::userdata.

640  {
641  userdata = data;
642  }
void * userdata
Definition: Device.h:650
void mutabor::InputDeviceClass::SilenceKeys ( bool  remove)
inline

Definiert in Zeile 1230 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::DoSilenceKeys() und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::CommonFileInputDevice::ThreadPlay().

1230  {
1231  ScopedLock lock(write_lock);
1232  DoSilenceKeys(remove);
1233  }
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoSilenceKeys(bool remove)
Definition: Device.cpp:362
int StartSep ( )

Definiert in Zeile 555 der Datei GIS.cpp.

Benutzt DEBUGLOG2.

Wird benutzt von GspParse().

556 {
557  DEBUGLOG2(gmnfile,_T("saving Sep %s"),Sep.c_str());
558  *Current = new GisToken(Sep, 0);
559  Current = &((*Current)->Next);
560  return 0;
561 }
Definition: GIS.h:132
GisToken ** Current
Definition: GIS.cpp:108
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
virtual void mutabor::Device::Stop ( )
inlinevirtual
virtual void mutabor::InputDeviceClass::Stop ( )
inlinevirtual

Stop playback or recording of the device.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 1083 der Datei Device.h.

Benutzt DEFAULT_PANIC, mutabor::DeviceStop, mutabor::Device::Mode und mutabor::InputDeviceClass::Panic().

Wird benutzt von mutabor::InputDeviceClass::Close().

1083  {
1085  Mode = DeviceStop;
1086  }
enum MutaborModeType Mode
Definition: Device.h:626
#define DEFAULT_PANIC
Definition: MidiKern.h:301
void Panic(int type)
reset the device if requested
Definition: Device.cpp:442
void mutabor::BoxClass::StopAll ( )
static

Stop all boxes.

This resets the action traces of all boxes.

Zu beachten
Code should be taken from Stop()

Definiert in Zeile 477 der Datei Box.cpp.

Benutzt mutabor::CurrentTime, mutabor::InClose(), mutabor::OutClose() und mutabor::CurrentTimer::Stop().

Wird benutzt von mutaborGUI::MutFrame::DoStop().

477  {
481  CloseAll();
482  }
void OutClose()
Definition: Device.cpp:704
void Stop()
Dummy function for stopping the timer.
Definition: timing.h:507
void InClose()
Definition: Device.cpp:740
static void CloseAll()
Close all boxes.
Definition: Box.cpp:453
CurrentTimer CurrentTime
Definition: timing.cpp:43
int StrCmp ( const mutString s1,
const mutString s2 
)

Definiert in Zeile 758 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

759 {
760  return s1.Cmp(s2);
761 }
int Tag ( const mutString  tagName)

Definiert in Zeile 735 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, mutCopyString, TagMode, TagName und TagSep.

Wird benutzt von BeginRange(), BuildTag(), mutaborGUI::MutLogicWnd::CmMutTag(), DoParse(), EndRange() und ReadTag().

736 {
737  DEBUGLOG2(gmnfile,_T("\\%s"),tagName.c_str());
738 
739  if ( TagMode ) BuildTag();
740 
741  mutCopyString(TagName, tagName);
742 
744 
745  TagMode = 1;
746 
747  return 0;
748 }
char TagMode
Definition: GIS.cpp:112
mutString TagSep
Definition: GIS.cpp:116
#define mutCopyString(left, right)
Definition: Defs.h:90
int BuildTag()
Definition: GIS.cpp:538
mutString TagName
Definition: GIS.cpp:114
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
int TagParaInt ( long  i)

Definiert in Zeile 750 der Datei GIS.cpp.

Benutzt DEBUGLOG2 und GisToken::Next.

Wird benutzt von ReadParaNumber().

751 {
752  DEBUGLOG2(gmnfile,_T("ParaInt: %ld"),i);
753  GisParaInt *p = new GisParaInt(i, Sep);
754 
755  if ( LastPara )
756  LastPara->Next = p;
757  else
758  Para = p;
759 
760  LastPara = p;
761 
762  return 0;
763 }
GisToken * Para
Definition: GIS.cpp:118
GisToken * Next
Definition: GIS.h:136
GisToken * LastPara
Definition: GIS.cpp:118
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
int TagParaReal ( double  x)

Definiert in Zeile 765 der Datei GIS.cpp.

Benutzt DEBUGLOG2 und GisToken::Next.

Wird benutzt von ReadParaNumber().

766 {
767  DEBUGLOG2(gmnfile,_T("ParaReal: %g"), x);
768  GisParaReal *p = new GisParaReal(x, Sep, 0);
769 
770  if ( LastPara )
771  LastPara->Next = p;
772  else
773  Para = p;
774 
775  LastPara = p;
776 
777  return 0;
778 }
GisToken * Para
Definition: GIS.cpp:118
GisToken * Next
Definition: GIS.h:136
GisToken * LastPara
Definition: GIS.cpp:118
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
int TagParaStr ( mutString  s)

Definiert in Zeile 780 der Datei GIS.cpp.

Benutzt DEBUGLOG2 und GisToken::Next.

Wird benutzt von ReadParaStr().

781 {
782  DEBUGLOG2(gmnfile,_T("ParaStr: %s"), s.c_str());
783  GisParaStr *p = new GisParaStr(s, Sep, 0);
784 
785  if ( LastPara )
786  LastPara->Next = p;
787  else
788  Para = p;
789 
790  LastPara = p;
791 
792  return 0;
793 }
GisToken * Para
Definition: GIS.cpp:118
GisToken * Next
Definition: GIS.h:136
GisToken * LastPara
Definition: GIS.cpp:118
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
wxString& takesep ( )
inline

Definiert in Zeile 216 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, DEBUGLOG2 und Sep.

217 {
218  Sep += CurrentLine[CurrentPos++];
219  DEBUGLOG2(other,_T("New Sep: %s"), Sep.c_str());
220  return Sep;
221 }
mutString CurrentLine
Definition: GSP_File.cpp:38
size_t CurrentPos
Definition: GSP_File.cpp:42
#define DEBUGLOG2(level,...)
Definition: mutDebug.h:147
mutString Sep
Definition: GSP.cpp:59
void CommonMidiOutputTest::tearDown ( )

Definiert in Zeile 62 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), CommonMidiOutputTest::guard, CommonMidiOutputTest::out und CommonMidiOutputTest::route.

63 {
64  guard->Destroy();
65  route->Destroy();
66  out = NULL;
67  guard.reset();
68  route.reset();
69  box -> Destroy();
70  box.reset();
71 
72  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
73  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
74  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
75  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
76 #ifdef DEBUG
77 // debugFlags::flags.timer = false;
78 // debugFlags::flags.midiio = false;
79 #endif
80 }
mutabor::Route route
Definition: midicmnTest.h:132
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
midicmnOutputDevice * out
Definition: midicmnTest.h:131
mutabor::Box box
Definition: midicmnTest.h:133
mutabor::OutputDevice guard
Definition: midicmnTest.h:130
static const listtype & GetDeviceList()
Definition: Device.h:726
void CommonMidiInputTest::tearDown ( )

Definiert in Zeile 575 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy(), CommonMidiInputTest::guard, CommonMidiInputTest::in, CommonMidiInputTest::out und CommonMidiInputTest::route.

576 {
577 
578  if (in) {
579  in->Destroy();
580  }
581  if(out)
582  out->Destroy();
583  if(route)
584  route->Destroy();
585  if (box)
586  box -> Destroy();
587  in = NULL;
588  out = NULL;
589  guard.reset();
590  route.reset();
591  box.reset();
592 #ifdef DEBUG
593 // debugFlags::flags.timer = false;
594  debugFlags::flags.midiio = false;
595 #endif
596 }
midicmnInputDevice * in
Definition: midicmnTest.h:210
mutabor::InputDevice guard
Definition: midicmnTest.h:207
virtual void Destroy()
Destroy the current object.
midicmnOutputDevice * out
Definition: midicmnTest.h:209
mutabor::Route route
Definition: midicmnTest.h:211
mutabor::Box box
Definition: midicmnTest.h:212
void OutputMidiFileTest::tearDown ( )

Definiert in Zeile 4593 der Datei DevMidFTest.cpp.

Benutzt OutputMidiFileTest::box, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), OutputMidiFileTest::guard, OutputMidiFileTest::out und OutputMidiFileTest::route.

4594 {
4595 #ifdef DEBUG
4596  debugFlags::flags.timer = false;
4597  debugFlags::flags.midifile = false;
4598 #endif
4599  if (out)
4600  out -> Destroy();
4601  out = NULL;
4602  guard.reset();
4603  route -> Destroy();
4604  route.reset();
4605  box -> Destroy();
4606  box.reset();
4607 
4608  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
4609  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
4610  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
4611  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
4612 }
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
mutabor::OutputDevice guard
Definition: DevMidFTest.h:228
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:229
mutabor::Route route
Definition: DevMidFTest.h:230
static const listtype & GetDeviceList()
Definition: Device.h:726
mutabor::Box box
Definition: DevMidFTest.h:231
void InputMidiFileTest::testAllControllerOff ( )

Definiert in Zeile 1467 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

1468 {
1469 #ifdef DEBUG
1470 // debugFlags::flags.timer = true;
1471 // debugFlags::flags.midiio = true;
1472 // debugFlags::flags.midifile = true;
1473 #endif
1474 
1475  // input device is set up during setUp
1476  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1477  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1478  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1479  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1480 
1482  midicmnOutputDevice * out;
1483  mutabor::ScopedBox box(NULL);
1484  mutabor::ScopedRoute route;
1486 
1489  connect(route,box);
1490 
1492  out = new midicmnOutputDevice(_T("Test"));
1493  out->SetBendingRange(2);
1494  //out = new midicmnOutputDevice(3,_T("Test"));
1495  guard = out;
1496 
1497  connect(route,guard);
1498  route->SetOutputFrom (0);
1499  route->SetOutputTo (15);
1500  route->OutputAvoidDrumChannel (true);
1501 
1502  connect(route, in);
1503 
1504  CPPUNIT_ASSERT( in );
1505  in -> SetName(_T(SRCDIR) _T("/all_controller_off.mid"));
1506 
1507 
1508  // First check: Input device provides the correct delta times
1511 
1512 // in -> Play(wxTHREAD_JOINABLE);
1514 
1515  CPPUNIT_ASSERT(out->Check(_T("\
1516 0 Opened...\n\
1517 0 0: e0 00 40\n\
1518 0 0: b0 7a 00\n\
1519 0 0: b0 7d 00\n\
1520 0 0: b0 7f 00\n\
1521 0 0: b0 65 00\n\
1522 0 0: b0 64 00\n\
1523 0 0: b0 06 02\n\
1524 0 0: b0 26 00\n\
1525 0 1: e1 00 40\n\
1526 0 1: b1 7a 00\n\
1527 0 1: b1 7d 00\n\
1528 0 1: b1 7f 00\n\
1529 0 1: b1 65 00\n\
1530 0 1: b1 64 00\n\
1531 0 1: b1 06 02\n\
1532 0 1: b1 26 00\n\
1533 0 2: e2 00 40\n\
1534 0 2: b2 7a 00\n\
1535 0 2: b2 7d 00\n\
1536 0 2: b2 7f 00\n\
1537 0 2: b2 65 00\n\
1538 0 2: b2 64 00\n\
1539 0 2: b2 06 02\n\
1540 0 2: b2 26 00\n\
1541 0 3: e3 00 40\n\
1542 0 3: b3 7a 00\n\
1543 0 3: b3 7d 00\n\
1544 0 3: b3 7f 00\n\
1545 0 3: b3 65 00\n\
1546 0 3: b3 64 00\n\
1547 0 3: b3 06 02\n\
1548 0 3: b3 26 00\n\
1549 0 4: e4 00 40\n\
1550 0 4: b4 7a 00\n\
1551 0 4: b4 7d 00\n\
1552 0 4: b4 7f 00\n\
1553 0 4: b4 65 00\n\
1554 0 4: b4 64 00\n\
1555 0 4: b4 06 02\n\
1556 0 4: b4 26 00\n\
1557 0 5: e5 00 40\n\
1558 0 5: b5 7a 00\n\
1559 0 5: b5 7d 00\n\
1560 0 5: b5 7f 00\n\
1561 0 5: b5 65 00\n\
1562 0 5: b5 64 00\n\
1563 0 5: b5 06 02\n\
1564 0 5: b5 26 00\n\
1565 0 6: e6 00 40\n\
1566 0 6: b6 7a 00\n\
1567 0 6: b6 7d 00\n\
1568 0 6: b6 7f 00\n\
1569 0 6: b6 65 00\n\
1570 0 6: b6 64 00\n\
1571 0 6: b6 06 02\n\
1572 0 6: b6 26 00\n\
1573 0 7: e7 00 40\n\
1574 0 7: b7 7a 00\n\
1575 0 7: b7 7d 00\n\
1576 0 7: b7 7f 00\n\
1577 0 7: b7 65 00\n\
1578 0 7: b7 64 00\n\
1579 0 7: b7 06 02\n\
1580 0 7: b7 26 00\n\
1581 0 8: e8 00 40\n\
1582 0 8: b8 7a 00\n\
1583 0 8: b8 7d 00\n\
1584 0 8: b8 7f 00\n\
1585 0 8: b8 65 00\n\
1586 0 8: b8 64 00\n\
1587 0 8: b8 06 02\n\
1588 0 8: b8 26 00\n\
1589 0 9: e9 00 40\n\
1590 0 9: b9 7a 00\n\
1591 0 9: b9 7d 00\n\
1592 0 9: b9 7f 00\n\
1593 0 9: b9 65 00\n\
1594 0 9: b9 64 00\n\
1595 0 9: b9 06 02\n\
1596 0 9: b9 26 00\n\
1597 0 10: ea 00 40\n\
1598 0 10: ba 7a 00\n\
1599 0 10: ba 7d 00\n\
1600 0 10: ba 7f 00\n\
1601 0 10: ba 65 00\n\
1602 0 10: ba 64 00\n\
1603 0 10: ba 06 02\n\
1604 0 10: ba 26 00\n\
1605 0 11: eb 00 40\n\
1606 0 11: bb 7a 00\n\
1607 0 11: bb 7d 00\n\
1608 0 11: bb 7f 00\n\
1609 0 11: bb 65 00\n\
1610 0 11: bb 64 00\n\
1611 0 11: bb 06 02\n\
1612 0 11: bb 26 00\n\
1613 0 12: ec 00 40\n\
1614 0 12: bc 7a 00\n\
1615 0 12: bc 7d 00\n\
1616 0 12: bc 7f 00\n\
1617 0 12: bc 65 00\n\
1618 0 12: bc 64 00\n\
1619 0 12: bc 06 02\n\
1620 0 12: bc 26 00\n\
1621 0 13: ed 00 40\n\
1622 0 13: bd 7a 00\n\
1623 0 13: bd 7d 00\n\
1624 0 13: bd 7f 00\n\
1625 0 13: bd 65 00\n\
1626 0 13: bd 64 00\n\
1627 0 13: bd 06 02\n\
1628 0 13: bd 26 00\n\
1629 0 14: ee 00 40\n\
1630 0 14: be 7a 00\n\
1631 0 14: be 7d 00\n\
1632 0 14: be 7f 00\n\
1633 0 14: be 65 00\n\
1634 0 14: be 64 00\n\
1635 0 14: be 06 02\n\
1636 0 14: be 26 00\n\
1637 0 15: ef 00 40\n\
1638 0 15: bf 7a 00\n\
1639 0 15: bf 7d 00\n\
1640 0 15: bf 7f 00\n\
1641 0 15: bf 65 00\n\
1642 0 15: bf 64 00\n\
1643 0 15: bf 06 02\n\
1644 0 15: bf 26 00\n\
1645 0 0: 90 3c 7f\n\
1646 1 0: b0 00 37\n\
1647 16 0: b0 03 14\n\
1648 29 0: b0 07 3a\n\
1649 46 0: b0 0b 05\n\
1650 101 0: b0 19 54\n\
1651 489 0: b0 40 00\n\
1652 489 0: b0 42 00\n\
1653 489 0: b0 44 00\n\
1654 489 0: b0 45 00\n\
1655 489 0: 80 3c 7f\n\
1656 490 1: b1 00 37\n\
1657 490 1: 91 40 3f\n\
1658 490 1: b1 07 3a\n\
1659 490 1: b1 03 00\n\
1660 490 1: b1 0b 7f\n\
1661 490 1: b1 19 00\n\
1662 492 1: 81 40 3e\n\
1663 546 ...closed.\n\
1664 "),__LINE__,_T(__FILE__)));
1665 
1666 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
mutabor::InputDevice in
Definition: DevMidFTest.h:78
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
void SetBendingRange(int br)
Definition: midicmn.h:550
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:455
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:592
void InputMidiFileTest::testBankSelect ( )

Definiert in Zeile 1239 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

1240 {
1241 #ifdef DEBUG
1242 // debugFlags::flags.timer = true;
1243 // debugFlags::flags.midiio = true;
1244 // debugFlags::flags.midifile = true;
1245 #endif
1246 
1247  // input device is set up during setUp
1248  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1249  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1250  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1251  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1252 
1254  midicmnOutputDevice * out;
1255  mutabor::ScopedBox box(NULL);
1256  mutabor::ScopedRoute route;
1258 
1261  connect(route,box);
1262 
1264  out = new midicmnOutputDevice(_T("Test"));
1265  out->SetBendingRange(2);
1266  //out = new midicmnOutputDevice(3,_T("Test"));
1267  guard = out;
1268 
1269  connect(route,guard);
1270  route->SetOutputFrom (0);
1271  route->SetOutputTo (15);
1272  route->OutputAvoidDrumChannel (true);
1273 
1274  connect(route, in);
1275 
1276  CPPUNIT_ASSERT( in );
1277  in -> SetName(_T(SRCDIR) _T("/bank_select.mid"));
1278 
1279 
1280  // First check: Input device provides the correct delta times
1283 
1284 // in -> Play(wxTHREAD_JOINABLE);
1286 
1287  CPPUNIT_ASSERT(out->Check(_T("\
1288 0 Opened...\n\
1289 0 0: e0 00 40\n\
1290 0 0: b0 7a 00\n\
1291 0 0: b0 7d 00\n\
1292 0 0: b0 7f 00\n\
1293 0 0: b0 65 00\n\
1294 0 0: b0 64 00\n\
1295 0 0: b0 06 02\n\
1296 0 0: b0 26 00\n\
1297 0 1: e1 00 40\n\
1298 0 1: b1 7a 00\n\
1299 0 1: b1 7d 00\n\
1300 0 1: b1 7f 00\n\
1301 0 1: b1 65 00\n\
1302 0 1: b1 64 00\n\
1303 0 1: b1 06 02\n\
1304 0 1: b1 26 00\n\
1305 0 2: e2 00 40\n\
1306 0 2: b2 7a 00\n\
1307 0 2: b2 7d 00\n\
1308 0 2: b2 7f 00\n\
1309 0 2: b2 65 00\n\
1310 0 2: b2 64 00\n\
1311 0 2: b2 06 02\n\
1312 0 2: b2 26 00\n\
1313 0 3: e3 00 40\n\
1314 0 3: b3 7a 00\n\
1315 0 3: b3 7d 00\n\
1316 0 3: b3 7f 00\n\
1317 0 3: b3 65 00\n\
1318 0 3: b3 64 00\n\
1319 0 3: b3 06 02\n\
1320 0 3: b3 26 00\n\
1321 0 4: e4 00 40\n\
1322 0 4: b4 7a 00\n\
1323 0 4: b4 7d 00\n\
1324 0 4: b4 7f 00\n\
1325 0 4: b4 65 00\n\
1326 0 4: b4 64 00\n\
1327 0 4: b4 06 02\n\
1328 0 4: b4 26 00\n\
1329 0 5: e5 00 40\n\
1330 0 5: b5 7a 00\n\
1331 0 5: b5 7d 00\n\
1332 0 5: b5 7f 00\n\
1333 0 5: b5 65 00\n\
1334 0 5: b5 64 00\n\
1335 0 5: b5 06 02\n\
1336 0 5: b5 26 00\n\
1337 0 6: e6 00 40\n\
1338 0 6: b6 7a 00\n\
1339 0 6: b6 7d 00\n\
1340 0 6: b6 7f 00\n\
1341 0 6: b6 65 00\n\
1342 0 6: b6 64 00\n\
1343 0 6: b6 06 02\n\
1344 0 6: b6 26 00\n\
1345 0 7: e7 00 40\n\
1346 0 7: b7 7a 00\n\
1347 0 7: b7 7d 00\n\
1348 0 7: b7 7f 00\n\
1349 0 7: b7 65 00\n\
1350 0 7: b7 64 00\n\
1351 0 7: b7 06 02\n\
1352 0 7: b7 26 00\n\
1353 0 8: e8 00 40\n\
1354 0 8: b8 7a 00\n\
1355 0 8: b8 7d 00\n\
1356 0 8: b8 7f 00\n\
1357 0 8: b8 65 00\n\
1358 0 8: b8 64 00\n\
1359 0 8: b8 06 02\n\
1360 0 8: b8 26 00\n\
1361 0 9: e9 00 40\n\
1362 0 9: b9 7a 00\n\
1363 0 9: b9 7d 00\n\
1364 0 9: b9 7f 00\n\
1365 0 9: b9 65 00\n\
1366 0 9: b9 64 00\n\
1367 0 9: b9 06 02\n\
1368 0 9: b9 26 00\n\
1369 0 10: ea 00 40\n\
1370 0 10: ba 7a 00\n\
1371 0 10: ba 7d 00\n\
1372 0 10: ba 7f 00\n\
1373 0 10: ba 65 00\n\
1374 0 10: ba 64 00\n\
1375 0 10: ba 06 02\n\
1376 0 10: ba 26 00\n\
1377 0 11: eb 00 40\n\
1378 0 11: bb 7a 00\n\
1379 0 11: bb 7d 00\n\
1380 0 11: bb 7f 00\n\
1381 0 11: bb 65 00\n\
1382 0 11: bb 64 00\n\
1383 0 11: bb 06 02\n\
1384 0 11: bb 26 00\n\
1385 0 12: ec 00 40\n\
1386 0 12: bc 7a 00\n\
1387 0 12: bc 7d 00\n\
1388 0 12: bc 7f 00\n\
1389 0 12: bc 65 00\n\
1390 0 12: bc 64 00\n\
1391 0 12: bc 06 02\n\
1392 0 12: bc 26 00\n\
1393 0 13: ed 00 40\n\
1394 0 13: bd 7a 00\n\
1395 0 13: bd 7d 00\n\
1396 0 13: bd 7f 00\n\
1397 0 13: bd 65 00\n\
1398 0 13: bd 64 00\n\
1399 0 13: bd 06 02\n\
1400 0 13: bd 26 00\n\
1401 0 14: ee 00 40\n\
1402 0 14: be 7a 00\n\
1403 0 14: be 7d 00\n\
1404 0 14: be 7f 00\n\
1405 0 14: be 65 00\n\
1406 0 14: be 64 00\n\
1407 0 14: be 06 02\n\
1408 0 14: be 26 00\n\
1409 0 15: ef 00 40\n\
1410 0 15: bf 7a 00\n\
1411 0 15: bf 7d 00\n\
1412 0 15: bf 7f 00\n\
1413 0 15: bf 65 00\n\
1414 0 15: bf 64 00\n\
1415 0 15: bf 06 02\n\
1416 0 15: bf 26 00\n\
1417 0 0: 90 3c 7f\n\
1418 1 0: b0 00 37\n\
1419 3 1: b1 00 37\n\
1420 3 1: 91 40 4f\n\
1421 4 0: b0 00 6e\n\
1422 4 1: b1 00 6e\n\
1423 5 1: 81 40 4e\n\
1424 6 2: b2 00 6e\n\
1425 6 2: 92 40 4f\n\
1426 7 0: b0 00 00\n\
1427 7 2: b2 00 00\n\
1428 8 2: 82 40 4e\n\
1429 8 3: b3 00 00\n\
1430 8 3: 93 40 4f\n\
1431 10 0: b0 00 25\n\
1432 10 3: b3 00 25\n\
1433 11 3: 83 40 4e\n\
1434 12 4: b4 00 25\n\
1435 12 4: 94 40 4f\n\
1436 13 0: b0 20 57\n\
1437 13 4: b4 20 57\n\
1438 14 4: 84 40 4e\n\
1439 15 5: b5 00 25\n\
1440 15 5: b5 20 57\n\
1441 15 5: 95 40 4f\n\
1442 16 0: b0 20 0e\n\
1443 16 5: b5 20 0e\n\
1444 17 5: 85 40 4e\n\
1445 18 6: b6 00 25\n\
1446 18 6: b6 20 0e\n\
1447 18 6: 96 40 4f\n\
1448 19 0: b0 20 00\n\
1449 19 6: b6 20 00\n\
1450 20 6: 86 40 4e\n\
1451 21 7: b7 00 25\n\
1452 21 7: b7 20 00\n\
1453 21 7: 97 40 4f\n\
1454 22 0: b0 20 45\n\
1455 22 7: b7 20 45\n\
1456 23 7: 87 40 4e\n\
1457 24 8: b8 00 25\n\
1458 24 8: b8 20 45\n\
1459 24 8: 98 40 4f\n\
1460 509 0: 80 3c 40\n\
1461 509 8: 88 40 40\n\
1462 509 ...closed.\n\
1463 "),__LINE__,_T(__FILE__)));
1464 
1465 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
mutabor::InputDevice in
Definition: DevMidFTest.h:78
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
void SetBendingRange(int br)
Definition: midicmn.h:550
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:455
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:592
void InputMidiFileTest::testBatchPlay1 ( )

Definiert in Zeile 43 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, MUTABOR_NO_DELTA, mutint64, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

44 {
45 #ifdef DEBUG
46 // debugFlags::flags.timer = true;
47 // debugFlags::flags.midiio = true;
48 #endif
49 
50  // input device is set up during setUp
51  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size()==1);
52  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
53  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
54  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
55 
57  midicmnOutputDevice * out;
58  mutabor::ScopedBox box(NULL);
61 
64  connect(route,box);
65 
67  out = new midicmnOutputDevice(_T("Test"));
68  out->SetBendingRange(2);
69  //out = new midicmnOutputDevice(3,_T("Test"));
70  guard = out;
71 
72  connect(route,guard);
73  route->SetOutputFrom (0);
74  route->SetOutputTo (15);
75  route->OutputAvoidDrumChannel (true);
76 
77  connect(route, in);
78 
79  CPPUNIT_ASSERT( in );
80  in -> SetName(_T(SRCDIR) _T("/midi1_source.mid"));
81 
82 
83  // First check: Input device provides the correct delta times
84 
87 
88  CPPUNIT_ASSERT((out -> Open()));
89  CPPUNIT_ASSERT(box -> Open());
90  CPPUNIT_ASSERT((in -> Open()));
91  CPPUNIT_ASSERT(out->Check(_T("0 Opened...\n\
92 0 0: e0 00 40\n\
93 0 0: b0 7a 00\n\
94 0 0: b0 7d 00\n\
95 0 0: b0 7f 00\n\
96 0 0: b0 65 00\n\
97 0 0: b0 64 00\n\
98 0 0: b0 06 02\n\
99 0 0: b0 26 00\n\
100 0 1: e1 00 40\n\
101 0 1: b1 7a 00\n\
102 0 1: b1 7d 00\n\
103 0 1: b1 7f 00\n\
104 0 1: b1 65 00\n\
105 0 1: b1 64 00\n\
106 0 1: b1 06 02\n\
107 0 1: b1 26 00\n\
108 0 2: e2 00 40\n\
109 0 2: b2 7a 00\n\
110 0 2: b2 7d 00\n\
111 0 2: b2 7f 00\n\
112 0 2: b2 65 00\n\
113 0 2: b2 64 00\n\
114 0 2: b2 06 02\n\
115 0 2: b2 26 00\n\
116 0 3: e3 00 40\n\
117 0 3: b3 7a 00\n\
118 0 3: b3 7d 00\n\
119 0 3: b3 7f 00\n\
120 0 3: b3 65 00\n\
121 0 3: b3 64 00\n\
122 0 3: b3 06 02\n\
123 0 3: b3 26 00\n\
124 0 4: e4 00 40\n\
125 0 4: b4 7a 00\n\
126 0 4: b4 7d 00\n\
127 0 4: b4 7f 00\n\
128 0 4: b4 65 00\n\
129 0 4: b4 64 00\n\
130 0 4: b4 06 02\n\
131 0 4: b4 26 00\n\
132 0 5: e5 00 40\n\
133 0 5: b5 7a 00\n\
134 0 5: b5 7d 00\n\
135 0 5: b5 7f 00\n\
136 0 5: b5 65 00\n\
137 0 5: b5 64 00\n\
138 0 5: b5 06 02\n\
139 0 5: b5 26 00\n\
140 0 6: e6 00 40\n\
141 0 6: b6 7a 00\n\
142 0 6: b6 7d 00\n\
143 0 6: b6 7f 00\n\
144 0 6: b6 65 00\n\
145 0 6: b6 64 00\n\
146 0 6: b6 06 02\n\
147 0 6: b6 26 00\n\
148 0 7: e7 00 40\n\
149 0 7: b7 7a 00\n\
150 0 7: b7 7d 00\n\
151 0 7: b7 7f 00\n\
152 0 7: b7 65 00\n\
153 0 7: b7 64 00\n\
154 0 7: b7 06 02\n\
155 0 7: b7 26 00\n\
156 0 8: e8 00 40\n\
157 0 8: b8 7a 00\n\
158 0 8: b8 7d 00\n\
159 0 8: b8 7f 00\n\
160 0 8: b8 65 00\n\
161 0 8: b8 64 00\n\
162 0 8: b8 06 02\n\
163 0 8: b8 26 00\n\
164 0 9: e9 00 40\n\
165 0 9: b9 7a 00\n\
166 0 9: b9 7d 00\n\
167 0 9: b9 7f 00\n\
168 0 9: b9 65 00\n\
169 0 9: b9 64 00\n\
170 0 9: b9 06 02\n\
171 0 9: b9 26 00\n\
172 0 10: ea 00 40\n\
173 0 10: ba 7a 00\n\
174 0 10: ba 7d 00\n\
175 0 10: ba 7f 00\n\
176 0 10: ba 65 00\n\
177 0 10: ba 64 00\n\
178 0 10: ba 06 02\n\
179 0 10: ba 26 00\n\
180 0 11: eb 00 40\n\
181 0 11: bb 7a 00\n\
182 0 11: bb 7d 00\n\
183 0 11: bb 7f 00\n\
184 0 11: bb 65 00\n\
185 0 11: bb 64 00\n\
186 0 11: bb 06 02\n\
187 0 11: bb 26 00\n\
188 0 12: ec 00 40\n\
189 0 12: bc 7a 00\n\
190 0 12: bc 7d 00\n\
191 0 12: bc 7f 00\n\
192 0 12: bc 65 00\n\
193 0 12: bc 64 00\n\
194 0 12: bc 06 02\n\
195 0 12: bc 26 00\n\
196 0 13: ed 00 40\n\
197 0 13: bd 7a 00\n\
198 0 13: bd 7d 00\n\
199 0 13: bd 7f 00\n\
200 0 13: bd 65 00\n\
201 0 13: bd 64 00\n\
202 0 13: bd 06 02\n\
203 0 13: bd 26 00\n\
204 0 14: ee 00 40\n\
205 0 14: be 7a 00\n\
206 0 14: be 7d 00\n\
207 0 14: be 7f 00\n\
208 0 14: be 65 00\n\
209 0 14: be 64 00\n\
210 0 14: be 06 02\n\
211 0 14: be 26 00\n\
212 0 15: ef 00 40\n\
213 0 15: bf 7a 00\n\
214 0 15: bf 7d 00\n\
215 0 15: bf 7f 00\n\
216 0 15: bf 65 00\n\
217 0 15: bf 64 00\n\
218 0 15: bf 06 02\n\
219 0 15: bf 26 00\n"),__LINE__,_T(__FILE__)));
220 
221 // in -> Play(wxTHREAD_JOINABLE);
222 // mutabor::InputDeviceClass::BatchPlay();
223  in -> Play();
224  mutint64 delta = in -> PrepareNextEvent();
225  // hold pedal comes from the sustain parameter to the contstructor
226  CPPUNIT_ASSERT(out->Check(_T("\
227 0 0: c0 4f\n\
228 0 0: 90 3c 7f\n\
229 "),__LINE__,_T(__FILE__)));
230 
231  CPPUNIT_ASSERT(delta == 49920);
232  delta = in -> PrepareNextEvent();
233  CPPUNIT_ASSERT(out->Check(_T("\
234 0 1: c1 4f\n\
235 0 1: 91 40 1f\n\
236 "),__LINE__,_T(__FILE__)));
237  CPPUNIT_ASSERT(delta == 49920);
238  delta = in -> PrepareNextEvent();
239  CPPUNIT_ASSERT(out->Check(_T("\
240 0 1: 81 40 40\n\
241 0 2: c2 4f\n\
242 0 2: 92 43 3f\n\
243 "),__LINE__,_T(__FILE__)));
244  CPPUNIT_ASSERT(delta == 49920);
245  delta = in -> PrepareNextEvent();
246  CPPUNIT_ASSERT(out->Check(_T("\
247 0 2: 82 43 40\n\
248 0 3: c3 4f\n\
249 0 3: 93 34 7f\n\
250 "),__LINE__,_T(__FILE__)));
251  CPPUNIT_ASSERT(delta == 49920);
252  delta = in -> PrepareNextEvent();
253  CPPUNIT_ASSERT(out->Check(_T("0 3: 83 34 40\n"),__LINE__,_T(__FILE__)));
254  CPPUNIT_ASSERT(delta == 49920);
255  delta = in -> PrepareNextEvent();
256  CPPUNIT_ASSERT(out->Check(_T("0 0: 80 3c 7f\n"),__LINE__,_T(__FILE__)));
257  CPPUNIT_ASSERT(delta == MUTABOR_NO_DELTA);
258 
259  in->Close();
260  box->Close();
261  out->Close();
262  CPPUNIT_ASSERT(out->Check(_T("0 ...closed.\n"),__LINE__,_T(__FILE__)));
263 
264 
265 
266  // Second check: Output device gets the correct delta times
267 
269 
270 // in -> Play(wxTHREAD_JOINABLE);
272 
273  CPPUNIT_ASSERT(out->Check(_T("0 Opened...\n\
274 0 0: e0 00 40\n\
275 0 0: b0 7a 00\n\
276 0 0: b0 7d 00\n\
277 0 0: b0 7f 00\n\
278 0 0: b0 65 00\n\
279 0 0: b0 64 00\n\
280 0 0: b0 06 02\n\
281 0 0: b0 26 00\n\
282 0 1: e1 00 40\n\
283 0 1: b1 7a 00\n\
284 0 1: b1 7d 00\n\
285 0 1: b1 7f 00\n\
286 0 1: b1 65 00\n\
287 0 1: b1 64 00\n\
288 0 1: b1 06 02\n\
289 0 1: b1 26 00\n\
290 0 2: e2 00 40\n\
291 0 2: b2 7a 00\n\
292 0 2: b2 7d 00\n\
293 0 2: b2 7f 00\n\
294 0 2: b2 65 00\n\
295 0 2: b2 64 00\n\
296 0 2: b2 06 02\n\
297 0 2: b2 26 00\n\
298 0 3: e3 00 40\n\
299 0 3: b3 7a 00\n\
300 0 3: b3 7d 00\n\
301 0 3: b3 7f 00\n\
302 0 3: b3 65 00\n\
303 0 3: b3 64 00\n\
304 0 3: b3 06 02\n\
305 0 3: b3 26 00\n\
306 0 4: e4 00 40\n\
307 0 4: b4 7a 00\n\
308 0 4: b4 7d 00\n\
309 0 4: b4 7f 00\n\
310 0 4: b4 65 00\n\
311 0 4: b4 64 00\n\
312 0 4: b4 06 02\n\
313 0 4: b4 26 00\n\
314 0 5: e5 00 40\n\
315 0 5: b5 7a 00\n\
316 0 5: b5 7d 00\n\
317 0 5: b5 7f 00\n\
318 0 5: b5 65 00\n\
319 0 5: b5 64 00\n\
320 0 5: b5 06 02\n\
321 0 5: b5 26 00\n\
322 0 6: e6 00 40\n\
323 0 6: b6 7a 00\n\
324 0 6: b6 7d 00\n\
325 0 6: b6 7f 00\n\
326 0 6: b6 65 00\n\
327 0 6: b6 64 00\n\
328 0 6: b6 06 02\n\
329 0 6: b6 26 00\n\
330 0 7: e7 00 40\n\
331 0 7: b7 7a 00\n\
332 0 7: b7 7d 00\n\
333 0 7: b7 7f 00\n\
334 0 7: b7 65 00\n\
335 0 7: b7 64 00\n\
336 0 7: b7 06 02\n\
337 0 7: b7 26 00\n\
338 0 8: e8 00 40\n\
339 0 8: b8 7a 00\n\
340 0 8: b8 7d 00\n\
341 0 8: b8 7f 00\n\
342 0 8: b8 65 00\n\
343 0 8: b8 64 00\n\
344 0 8: b8 06 02\n\
345 0 8: b8 26 00\n\
346 0 9: e9 00 40\n\
347 0 9: b9 7a 00\n\
348 0 9: b9 7d 00\n\
349 0 9: b9 7f 00\n\
350 0 9: b9 65 00\n\
351 0 9: b9 64 00\n\
352 0 9: b9 06 02\n\
353 0 9: b9 26 00\n\
354 0 10: ea 00 40\n\
355 0 10: ba 7a 00\n\
356 0 10: ba 7d 00\n\
357 0 10: ba 7f 00\n\
358 0 10: ba 65 00\n\
359 0 10: ba 64 00\n\
360 0 10: ba 06 02\n\
361 0 10: ba 26 00\n\
362 0 11: eb 00 40\n\
363 0 11: bb 7a 00\n\
364 0 11: bb 7d 00\n\
365 0 11: bb 7f 00\n\
366 0 11: bb 65 00\n\
367 0 11: bb 64 00\n\
368 0 11: bb 06 02\n\
369 0 11: bb 26 00\n\
370 0 12: ec 00 40\n\
371 0 12: bc 7a 00\n\
372 0 12: bc 7d 00\n\
373 0 12: bc 7f 00\n\
374 0 12: bc 65 00\n\
375 0 12: bc 64 00\n\
376 0 12: bc 06 02\n\
377 0 12: bc 26 00\n\
378 0 13: ed 00 40\n\
379 0 13: bd 7a 00\n\
380 0 13: bd 7d 00\n\
381 0 13: bd 7f 00\n\
382 0 13: bd 65 00\n\
383 0 13: bd 64 00\n\
384 0 13: bd 06 02\n\
385 0 13: bd 26 00\n\
386 0 14: ee 00 40\n\
387 0 14: be 7a 00\n\
388 0 14: be 7d 00\n\
389 0 14: be 7f 00\n\
390 0 14: be 65 00\n\
391 0 14: be 64 00\n\
392 0 14: be 06 02\n\
393 0 14: be 26 00\n\
394 0 15: ef 00 40\n\
395 0 15: bf 7a 00\n\
396 0 15: bf 7d 00\n\
397 0 15: bf 7f 00\n\
398 0 15: bf 65 00\n\
399 0 15: bf 64 00\n\
400 0 15: bf 06 02\n\
401 0 15: bf 26 00\n\
402 0 0: c0 4f\n\
403 0 0: 90 3c 7f\n\
404 49920 1: c1 4f\n\
405 49920 1: 91 40 1f\n\
406 99840 1: 81 40 40\n\
407 99840 2: c2 4f\n\
408 99840 2: 92 43 3f\n\
409 149760 2: 82 43 40\n\
410 149760 3: c3 4f\n\
411 149760 3: 93 34 7f\n\
412 199680 3: 83 34 40\n\
413 249600 0: 80 3c 7f\n\
414 249600 ...closed.\n"),__LINE__,_T(__FILE__)));
415 
416  sleep(1);
417 
419 
420  CPPUNIT_ASSERT(out->Check(_T("0 Opened...\n\
421 0 0: e0 00 40\n\
422 0 0: b0 7a 00\n\
423 0 0: b0 7d 00\n\
424 0 0: b0 7f 00\n\
425 0 0: b0 65 00\n\
426 0 0: b0 64 00\n\
427 0 0: b0 06 02\n\
428 0 0: b0 26 00\n\
429 0 1: e1 00 40\n\
430 0 1: b1 7a 00\n\
431 0 1: b1 7d 00\n\
432 0 1: b1 7f 00\n\
433 0 1: b1 65 00\n\
434 0 1: b1 64 00\n\
435 0 1: b1 06 02\n\
436 0 1: b1 26 00\n\
437 0 2: e2 00 40\n\
438 0 2: b2 7a 00\n\
439 0 2: b2 7d 00\n\
440 0 2: b2 7f 00\n\
441 0 2: b2 65 00\n\
442 0 2: b2 64 00\n\
443 0 2: b2 06 02\n\
444 0 2: b2 26 00\n\
445 0 3: e3 00 40\n\
446 0 3: b3 7a 00\n\
447 0 3: b3 7d 00\n\
448 0 3: b3 7f 00\n\
449 0 3: b3 65 00\n\
450 0 3: b3 64 00\n\
451 0 3: b3 06 02\n\
452 0 3: b3 26 00\n\
453 0 4: e4 00 40\n\
454 0 4: b4 7a 00\n\
455 0 4: b4 7d 00\n\
456 0 4: b4 7f 00\n\
457 0 4: b4 65 00\n\
458 0 4: b4 64 00\n\
459 0 4: b4 06 02\n\
460 0 4: b4 26 00\n\
461 0 5: e5 00 40\n\
462 0 5: b5 7a 00\n\
463 0 5: b5 7d 00\n\
464 0 5: b5 7f 00\n\
465 0 5: b5 65 00\n\
466 0 5: b5 64 00\n\
467 0 5: b5 06 02\n\
468 0 5: b5 26 00\n\
469 0 6: e6 00 40\n\
470 0 6: b6 7a 00\n\
471 0 6: b6 7d 00\n\
472 0 6: b6 7f 00\n\
473 0 6: b6 65 00\n\
474 0 6: b6 64 00\n\
475 0 6: b6 06 02\n\
476 0 6: b6 26 00\n\
477 0 7: e7 00 40\n\
478 0 7: b7 7a 00\n\
479 0 7: b7 7d 00\n\
480 0 7: b7 7f 00\n\
481 0 7: b7 65 00\n\
482 0 7: b7 64 00\n\
483 0 7: b7 06 02\n\
484 0 7: b7 26 00\n\
485 0 8: e8 00 40\n\
486 0 8: b8 7a 00\n\
487 0 8: b8 7d 00\n\
488 0 8: b8 7f 00\n\
489 0 8: b8 65 00\n\
490 0 8: b8 64 00\n\
491 0 8: b8 06 02\n\
492 0 8: b8 26 00\n\
493 0 9: e9 00 40\n\
494 0 9: b9 7a 00\n\
495 0 9: b9 7d 00\n\
496 0 9: b9 7f 00\n\
497 0 9: b9 65 00\n\
498 0 9: b9 64 00\n\
499 0 9: b9 06 02\n\
500 0 9: b9 26 00\n\
501 0 10: ea 00 40\n\
502 0 10: ba 7a 00\n\
503 0 10: ba 7d 00\n\
504 0 10: ba 7f 00\n\
505 0 10: ba 65 00\n\
506 0 10: ba 64 00\n\
507 0 10: ba 06 02\n\
508 0 10: ba 26 00\n\
509 0 11: eb 00 40\n\
510 0 11: bb 7a 00\n\
511 0 11: bb 7d 00\n\
512 0 11: bb 7f 00\n\
513 0 11: bb 65 00\n\
514 0 11: bb 64 00\n\
515 0 11: bb 06 02\n\
516 0 11: bb 26 00\n\
517 0 12: ec 00 40\n\
518 0 12: bc 7a 00\n\
519 0 12: bc 7d 00\n\
520 0 12: bc 7f 00\n\
521 0 12: bc 65 00\n\
522 0 12: bc 64 00\n\
523 0 12: bc 06 02\n\
524 0 12: bc 26 00\n\
525 0 13: ed 00 40\n\
526 0 13: bd 7a 00\n\
527 0 13: bd 7d 00\n\
528 0 13: bd 7f 00\n\
529 0 13: bd 65 00\n\
530 0 13: bd 64 00\n\
531 0 13: bd 06 02\n\
532 0 13: bd 26 00\n\
533 0 14: ee 00 40\n\
534 0 14: be 7a 00\n\
535 0 14: be 7d 00\n\
536 0 14: be 7f 00\n\
537 0 14: be 65 00\n\
538 0 14: be 64 00\n\
539 0 14: be 06 02\n\
540 0 14: be 26 00\n\
541 0 15: ef 00 40\n\
542 0 15: bf 7a 00\n\
543 0 15: bf 7d 00\n\
544 0 15: bf 7f 00\n\
545 0 15: bf 65 00\n\
546 0 15: bf 64 00\n\
547 0 15: bf 06 02\n\
548 0 15: bf 26 00\n\
549 0 0: c0 4f\n\
550 0 0: 90 3c 7f\n\
551 49920 1: c1 4f\n\
552 49920 1: 91 40 1f\n\
553 99840 1: 81 40 40\n\
554 99840 2: c2 4f\n\
555 99840 2: 92 43 3f\n\
556 149760 2: 82 43 40\n\
557 149760 3: c3 4f\n\
558 149760 3: 93 34 7f\n\
559 199680 3: 83 34 40\n\
560 249600 0: 80 3c 7f\n\
561 249600 ...closed.\n"),__LINE__,_T(__FILE__)));
562 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
mutabor::InputDevice in
Definition: DevMidFTest.h:78
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
#define MUTABOR_NO_DELTA
Definition: timing.h:62
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
#define mutint64
Definition: Defs.h:70
void SetBendingRange(int br)
Definition: midicmn.h:550
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:455
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:592
void OutputMidiFileTest::testBatchPlay1 ( )
Noch zu erledigen:
Make the following line unneccessary: Implement caching of system states

Definiert in Zeile 4805 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), OutputMidiFileTest::box, OutputMidiFileTest::CheckOut(), mutabor::OutputMidiFile::Close(), mutabor::InputMidiFile::Close(), mutabor::connect(), mutabor::DeviceFactory::CreateInput(), mutabor::CurrentTime, DEBUGLOG, mutabor::DTMidiFile, MUTABOR_NO_DELTA, mutint64, OutputMidiFileTest::out, OutputMidiFileTest::route und mutabor::CurrentTimer::UseRealtime().

4806 {
4807 #ifdef DEBUG
4808 // debugFlags::flags.timer = true;
4809 // debugFlags::flags.midiio = true;
4810 #endif
4811 
4812  wxString CheckStr;
4813  wxString DataStr;
4816  mutabor::InputMidiFile * in =
4817  static_cast<mutabor::InputMidiFile *> (inguard.get());
4818  CPPUNIT_ASSERT( in );
4819 
4820  connect(route, inguard);
4821 
4822  in -> SetName(_T(SRCDIR) _T("/bug019010.mid"));
4825 
4826  CPPUNIT_ASSERT((out -> Open()));
4827 
4828 
4829  DataStr = _T("\
4830  04 · 04 · 02 · 18 · 08 · 00 · e0 · 00 · 40 @ 00 · b0 · 7a z 00 · 00 · b0 · 7d }\n\
4831  00 · 00 · b0 · 7f · 00 · 00 · b0 · 65 e 00 · 00 · b0 · 64 d 00 · 00 · b0 · 06 ·\n\
4832  02 · 00 · b0 · 26 & 00 · 00 · e1 · 00 · 40 @ 00 · b1 · 7a z 00 · 00 · b1 · 7d }\n\
4833  00 · 00 · b1 · 7f · 00 · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 · 00 · b1 · 06 ·\n\
4834  02 · 00 · b1 · 26 & 00 · 00 · e2 · 00 · 40 @ 00 · b2 · 7a z 00 · 00 · b2 · 7d }\n\
4835  00 · 00 · b2 · 7f · 00 · 00 · b2 · 65 e 00 · 00 · b2 · 64 d 00 · 00 · b2 · 06 ·\n\
4836  02 · 00 · b2 · 26 & 00 · 00 · e3 · 00 · 40 @ 00 · b3 · 7a z 00 · 00 · b3 · 7d }\n\
4837  00 · 00 · b3 · 7f · 00 · 00 · b3 · 65 e 00 · 00 · b3 · 64 d 00 · 00 · b3 · 06 ·\n\
4838  02 · 00 · b3 · 26 & 00 · 00 · e4 · 00 · 40 @ 00 · b4 · 7a z 00 · 00 · b4 · 7d }\n\
4839  00 · 00 · b4 · 7f · 00 · 00 · b4 · 65 e 00 · 00 · b4 · 64 d 00 · 00 · b4 · 06 ·\n\
4840  02 · 00 · b4 · 26 & 00 · 00 · e5 · 00 · 40 @ 00 · b5 · 7a z 00 · 00 · b5 · 7d }\n\
4841  00 · 00 · b5 · 7f · 00 · 00 · b5 · 65 e 00 · 00 · b5 · 64 d 00 · 00 · b5 · 06 ·\n\
4842  02 · 00 · b5 · 26 & 00 · 00 · e6 · 00 · 40 @ 00 · b6 · 7a z 00 · 00 · b6 · 7d }\n\
4843  00 · 00 · b6 · 7f · 00 · 00 · b6 · 65 e 00 · 00 · b6 · 64 d 00 · 00 · b6 · 06 ·\n\
4844  02 · 00 · b6 · 26 & 00 · 00 · e7 · 00 · 40 @ 00 · b7 · 7a z 00 · 00 · b7 · 7d }\n\
4845  00 · 00 · b7 · 7f · 00 · 00 · b7 · 65 e 00 · 00 · b7 · 64 d 00 · 00 · b7 · 06 ·\n\
4846  02 · 00 · b7 · 26 & 00 · 00 · e8 · 00 · 40 @ 00 · b8 · 7a z 00 · 00 · b8 · 7d }\n\
4847  00 · 00 · b8 · 7f · 00 · 00 · b8 · 65 e 00 · 00 · b8 · 64 d 00 · 00 · b8 · 06 ·\n\
4848  02 · 00 · b8 · 26 & 00 · 00 · e9 · 00 · 40 @ 00 · b9 · 7a z 00 · 00 · b9 · 7d }\n\
4849  00 · 00 · b9 · 7f · 00 · 00 · b9 · 65 e 00 · 00 · b9 · 64 d 00 · 00 · b9 · 06 ·\n\
4850  02 · 00 · b9 · 26 & 00 · 00 · ea · 00 · 40 @ 00 · ba · 7a z 00 · 00 · ba · 7d }\n\
4851  00 · 00 · ba · 7f · 00 · 00 · ba · 65 e 00 · 00 · ba · 64 d 00 · 00 · ba · 06 ·\n\
4852  02 · 00 · ba · 26 & 00 · 00 · eb · 00 · 40 @ 00 · bb · 7a z 00 · 00 · bb · 7d }\n\
4853  00 · 00 · bb · 7f · 00 · 00 · bb · 65 e 00 · 00 · bb · 64 d 00 · 00 · bb · 06 ·\n\
4854  02 · 00 · bb · 26 & 00 · 00 · ec · 00 · 40 @ 00 · bc · 7a z 00 · 00 · bc · 7d }\n\
4855  00 · 00 · bc · 7f · 00 · 00 · bc · 65 e 00 · 00 · bc · 64 d 00 · 00 · bc · 06 ·\n\
4856  02 · 00 · bc · 26 & 00 · 00 · ed · 00 · 40 @ 00 · bd · 7a z 00 · 00 · bd · 7d }\n\
4857  00 · 00 · bd · 7f · 00 · 00 · bd · 65 e 00 · 00 · bd · 64 d 00 · 00 · bd · 06 ·\n\
4858  02 · 00 · bd · 26 & 00 · 00 · ee · 00 · 40 @ 00 · be · 7a z 00 · 00 · be · 7d }\n\
4859  00 · 00 · be · 7f · 00 · 00 · be · 65 e 00 · 00 · be · 64 d 00 · 00 · be · 06 ·\n\
4860  02 · 00 · be · 26 & 00 · 00 · ef · 00 · 40 @ 00 · bf · 7a z 00 · 00 · bf · 7d }\n\
4861  00 · 00 · bf · 7f · 00 · 00 · bf · 65 e 00 · 00 · bf · 64 d 00 · 00 · bf · 06 ·\n\
4862 ");
4863 
4864  CheckStr = _T("\
4865  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
4866  72 r 6b k 00 · 00 · 02 · 13 · 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
4867 ")
4868  + DataStr + _T("\
4869  02 · 00 · bf · 26 & 00 · 00 · ff · 2f / 00 ·\n\
4870 ");
4871 
4872  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4873  CPPUNIT_ASSERT(box->Open());
4874  CPPUNIT_ASSERT((in -> Open()));
4875  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4876 
4877  in -> Play();
4878 
4879  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4880 
4881  mutint64 delta = in -> PrepareNextEvent();
4882  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4883  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4884  CPPUNIT_ASSERT(delta == 1086);
4885  mutabor::CurrentTime += delta;
4886 
4887  delta = in -> PrepareNextEvent();
4888  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4889  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4890  CPPUNIT_ASSERT(delta == 1954800);
4891  mutabor::CurrentTime += delta;
4892 
4893  delta = in -> PrepareNextEvent();
4894  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4895  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4896  CPPUNIT_ASSERT(delta == 14725074);
4897  mutabor::CurrentTime += delta;
4898 
4899  delta = in -> PrepareNextEvent();
4900  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4901  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4902  CPPUNIT_ASSERT(delta == 130320);
4903  mutabor::CurrentTime += delta;
4904 
4905  delta = in -> PrepareNextEvent();
4906  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4907  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4908  CPPUNIT_ASSERT(delta == 130200);
4909  mutabor::CurrentTime += delta;
4910 
4911  delta = in -> PrepareNextEvent();
4912  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4913  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4914  CPPUNIT_ASSERT(delta == 4769600);
4915  mutabor::CurrentTime += delta;
4916 
4917  delta = in -> PrepareNextEvent();
4918  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4919 
4920  CheckStr = _T("\
4921  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
4922  72 r 6b k 00 · 00 · 02 · 19 · 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
4923 ")
4924  + DataStr + _T("\
4925  02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · 00 · ff · 2f / 00 ·\n\
4926 ");
4927 
4928  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4929  CPPUNIT_ASSERT(delta == 6287200);
4930  mutabor::CurrentTime += delta;
4931 
4932  delta = in -> PrepareNextEvent();
4933  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4934  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4935  CPPUNIT_ASSERT(delta == 845040);
4936  mutabor::CurrentTime += delta;
4937 
4938  delta = in -> PrepareNextEvent();
4939  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4940  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4941  CPPUNIT_ASSERT(delta == 120000);
4942  mutabor::CurrentTime += delta;
4943 
4944  delta = in -> PrepareNextEvent();
4945  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4946  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4947  CPPUNIT_ASSERT(delta == 123960);
4948  mutabor::CurrentTime += delta;
4949 
4950  delta = in -> PrepareNextEvent();
4951  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4952  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4953  CPPUNIT_ASSERT(delta == 3222960);
4954  mutabor::CurrentTime += delta;
4955 
4956  delta = in -> PrepareNextEvent();
4957  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4958 
4959 
4960  DataStr += _T("\
4961  02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · d2 · 67 g 91 · 40 @ 1f ·\n\
4962 ");
4963 
4964  CheckStr = _T("\
4965  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
4966  72 r 6b k 00 · 00 · 02 · 1e · 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
4967 ")
4968  + DataStr + _T("\
4969  00 · ff · 2f / 00 ·\n\
4970 ");
4971 
4972  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4973  CPPUNIT_ASSERT(delta == 10330000);
4974  mutabor::CurrentTime += delta;
4975 
4976  delta = in -> PrepareNextEvent();
4977  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4978 
4979  CheckStr = _T("\
4980  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
4981  72 r 6b k 00 · 00 · 02 · 23 # 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
4982 ")
4983  + DataStr + _T("\
4984  d0 · 5a Z 81 · 40 @ 40 @ 00 · ff · 2f / 00 ·\n\
4985 ");
4986 
4987  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
4988  CPPUNIT_ASSERT(delta == 10330000);
4989  mutabor::CurrentTime += delta;
4990 
4991  delta = in -> PrepareNextEvent();
4992  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
4993 
4994  CheckStr = _T("\
4995  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
4996  72 r 6b k 00 · 00 · 02 · 28 ( 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
4997 ")
4998  + DataStr + _T("\
4999  d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? 00 · ff · 2f / 00 ·\n\
5000 ");
5001 
5002 
5003  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5004  CPPUNIT_ASSERT(delta == 10330000);
5005  mutabor::CurrentTime += delta;
5006 
5007  delta = in -> PrepareNextEvent();
5008  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5009  CheckStr = _T("\
5010  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5011  72 r 6b k 00 · 00 · 02 · 2d - 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5012 ")
5013  + DataStr + _T("\
5014  d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? d0 · 5a Z 82 · 43 C 40 @ 00 ·\n\
5015  ff · 2f / 00 ·\n\
5016 ");
5017  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5018  CPPUNIT_ASSERT(delta == 7809480);
5019  mutabor::CurrentTime += delta;
5020 
5021  delta = in -> PrepareNextEvent();
5022  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5023  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5024  CPPUNIT_ASSERT(delta == 6100000);
5025  mutabor::CurrentTime += delta;
5026 
5027  delta = in -> PrepareNextEvent();
5028  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5029 
5030  DataStr += _T("\
5031  d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? d0 · 5a Z 82 · 43 C 40 @ ec ·\n\
5032 ");
5033  CheckStr = _T("\
5034  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5035  72 r 6b k 00 · 00 · 02 · 32 2 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5036 ")
5037  + DataStr + _T("\
5038  56 V 93 · 34 4 7f · 00 · ff · 2f / 00 ·\n\
5039 ");
5040  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5041  CPPUNIT_ASSERT(delta == 200000);
5042  mutabor::CurrentTime += delta;
5043 
5044  delta = in -> PrepareNextEvent();
5045  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5046  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5047  CPPUNIT_ASSERT(delta == 146280);
5048  mutabor::CurrentTime += delta;
5049 
5050  delta = in -> PrepareNextEvent();
5051  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5052  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5053  CPPUNIT_ASSERT(delta == 148080);
5054  mutabor::CurrentTime += delta;
5055 
5056  delta = in -> PrepareNextEvent();
5057  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5058  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5059  CPPUNIT_ASSERT(delta == 150000);
5060  mutabor::CurrentTime += delta;
5061 
5062  delta = in -> PrepareNextEvent();
5063  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5064  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5065  CPPUNIT_ASSERT(delta == 151800);
5066  mutabor::CurrentTime += delta;
5067 
5068  delta = in -> PrepareNextEvent();
5069  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5070  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5071  CPPUNIT_ASSERT(delta == 153840);
5072  mutabor::CurrentTime += delta;
5073 
5074  delta = in -> PrepareNextEvent();
5075  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5076  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5077  CPPUNIT_ASSERT(delta == 155760);
5078  mutabor::CurrentTime += delta;
5079 
5080  delta = in -> PrepareNextEvent();
5081  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5082  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5083  CPPUNIT_ASSERT(delta == 157800);
5084  mutabor::CurrentTime += delta;
5085 
5086  delta = in -> PrepareNextEvent();
5087  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5088  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5089  CPPUNIT_ASSERT(delta == 159960);
5090  mutabor::CurrentTime += delta;
5091 
5092  delta = in -> PrepareNextEvent();
5093  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5094  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5095  CPPUNIT_ASSERT(delta == 12104960);
5096  mutabor::CurrentTime += delta;
5097 
5098  delta = in -> PrepareNextEvent();
5099  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5100 
5101  CheckStr = _T("\
5102  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5103  72 r 6b k 00 · 00 · 02 · 37 7 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5104 ")
5105  + DataStr + _T("\
5106  56 V 93 · 34 4 7f · e9 · 58 X 83 · 34 4 40 @ 00 · ff · 2f / 00 ·\n\
5107 ");
5108  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5109  CPPUNIT_ASSERT(delta == 13510000);
5110  mutabor::CurrentTime += delta;
5111 
5112  delta = in -> PrepareNextEvent();
5113  DEBUGLOG(midiio,_T("delta = %d, Current time = %ld"),delta,mutabor::CurrentTime.Get());
5114  CheckStr = _T("\
5115  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5116  72 r 6b k 00 · 00 · 02 · 3c < 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5117 ")
5118  + DataStr + _T("\
5119  56 V 93 · 34 4 7f · e9 · 58 X 83 · 34 4 40 @ e9 · 46 F 80 · 3c < 7f · 00 · ff ·\n\
5120  2f / 00 ·\n\
5121 ");
5122  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5123  CPPUNIT_ASSERT(delta == MUTABOR_NO_DELTA);
5124 
5125 
5126 
5127  in->Close();
5128  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5129 
5130  out->Close();
5131  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5132 
5133 
5134 
5135  // First check: Input device provides the correct delta times
5136 
5139 
5140  CPPUNIT_ASSERT( in );
5141  in -> SetName(_T("test_output.mid"));
5142  out -> SetName(_T("test_output2.mid"));
5143 
5144 
5145 // in -> Play(wxTHREAD_JOINABLE);
5147 
5148 
5152  CheckStr = _T("\
5153  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5154  72 r 6b k 00 · 00 · 02 · 53 S 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5155  04 · 04 · 02 · 18 · 08 · 00 · e0 · 00 · 40 @ 00 · b0 · 7a z 00 · 00 · b0 · 7d }\n\
5156  00 · 00 · b0 · 7f · 00 · 00 · b0 · 65 e 00 · 00 · b0 · 64 d 00 · 00 · b0 · 06 ·\n\
5157  02 · 00 · b0 · 26 & 00 · 00 · e1 · 00 · 40 @ 00 · b1 · 7a z 00 · 00 · b1 · 7d }\n\
5158  00 · 00 · b1 · 7f · 00 · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 · 00 · b1 · 06 ·\n\
5159  02 · 00 · b1 · 26 & 00 · 00 · e2 · 00 · 40 @ 00 · b2 · 7a z 00 · 00 · b2 · 7d }\n\
5160  00 · 00 · b2 · 7f · 00 · 00 · b2 · 65 e 00 · 00 · b2 · 64 d 00 · 00 · b2 · 06 ·\n\
5161  02 · 00 · b2 · 26 & 00 · 00 · e3 · 00 · 40 @ 00 · b3 · 7a z 00 · 00 · b3 · 7d }\n\
5162  00 · 00 · b3 · 7f · 00 · 00 · b3 · 65 e 00 · 00 · b3 · 64 d 00 · 00 · b3 · 06 ·\n\
5163  02 · 00 · b3 · 26 & 00 · 00 · e4 · 00 · 40 @ 00 · b4 · 7a z 00 · 00 · b4 · 7d }\n\
5164  00 · 00 · b4 · 7f · 00 · 00 · b4 · 65 e 00 · 00 · b4 · 64 d 00 · 00 · b4 · 06 ·\n\
5165  02 · 00 · b4 · 26 & 00 · 00 · e5 · 00 · 40 @ 00 · b5 · 7a z 00 · 00 · b5 · 7d }\n\
5166  00 · 00 · b5 · 7f · 00 · 00 · b5 · 65 e 00 · 00 · b5 · 64 d 00 · 00 · b5 · 06 ·\n\
5167  02 · 00 · b5 · 26 & 00 · 00 · e6 · 00 · 40 @ 00 · b6 · 7a z 00 · 00 · b6 · 7d }\n\
5168  00 · 00 · b6 · 7f · 00 · 00 · b6 · 65 e 00 · 00 · b6 · 64 d 00 · 00 · b6 · 06 ·\n\
5169  02 · 00 · b6 · 26 & 00 · 00 · e7 · 00 · 40 @ 00 · b7 · 7a z 00 · 00 · b7 · 7d }\n\
5170  00 · 00 · b7 · 7f · 00 · 00 · b7 · 65 e 00 · 00 · b7 · 64 d 00 · 00 · b7 · 06 ·\n\
5171  02 · 00 · b7 · 26 & 00 · 00 · e8 · 00 · 40 @ 00 · b8 · 7a z 00 · 00 · b8 · 7d }\n\
5172  00 · 00 · b8 · 7f · 00 · 00 · b8 · 65 e 00 · 00 · b8 · 64 d 00 · 00 · b8 · 06 ·\n\
5173  02 · 00 · b8 · 26 & 00 · 00 · e9 · 00 · 40 @ 00 · b9 · 7a z 00 · 00 · b9 · 7d }\n\
5174  00 · 00 · b9 · 7f · 00 · 00 · b9 · 65 e 00 · 00 · b9 · 64 d 00 · 00 · b9 · 06 ·\n\
5175  02 · 00 · b9 · 26 & 00 · 00 · ea · 00 · 40 @ 00 · ba · 7a z 00 · 00 · ba · 7d }\n\
5176  00 · 00 · ba · 7f · 00 · 00 · ba · 65 e 00 · 00 · ba · 64 d 00 · 00 · ba · 06 ·\n\
5177  02 · 00 · ba · 26 & 00 · 00 · eb · 00 · 40 @ 00 · bb · 7a z 00 · 00 · bb · 7d }\n\
5178  00 · 00 · bb · 7f · 00 · 00 · bb · 65 e 00 · 00 · bb · 64 d 00 · 00 · bb · 06 ·\n\
5179  02 · 00 · bb · 26 & 00 · 00 · ec · 00 · 40 @ 00 · bc · 7a z 00 · 00 · bc · 7d }\n\
5180  00 · 00 · bc · 7f · 00 · 00 · bc · 65 e 00 · 00 · bc · 64 d 00 · 00 · bc · 06 ·\n\
5181  02 · 00 · bc · 26 & 00 · 00 · ed · 00 · 40 @ 00 · bd · 7a z 00 · 00 · bd · 7d }\n\
5182  00 · 00 · bd · 7f · 00 · 00 · bd · 65 e 00 · 00 · bd · 64 d 00 · 00 · bd · 06 ·\n\
5183  02 · 00 · bd · 26 & 00 · 00 · ee · 00 · 40 @ 00 · be · 7a z 00 · 00 · be · 7d }\n\
5184  00 · 00 · be · 7f · 00 · 00 · be · 65 e 00 · 00 · be · 64 d 00 · 00 · be · 06 ·\n\
5185  02 · 00 · be · 26 & 00 · 00 · ef · 00 · 40 @ 00 · bf · 7a z 00 · 00 · bf · 7d }\n\
5186  00 · 00 · bf · 7f · 00 · 00 · bf · 65 e 00 · 00 · bf · 64 d 00 · 00 · bf · 06 ·\n\
5187  02 · 00 · bf · 26 & 00 · 00 · 90 · 3c < 7f · 00 · b0 · 65 e 00 · 00 · b0 · 64 d\n\
5188  00 · 00 · 91 · 40 @ 1f · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 · 00 · 81 · 40 @\n\
5189  40 @ 00 · 92 · 43 C 3f ? 00 · b2 · 65 e 00 · 00 · b2 · 64 d 00 · 00 · 82 · 43 C\n\
5190  40 @ 00 · 93 · 34 4 7f · 00 · b3 · 65 e 00 · 00 · b3 · 64 d 00 · 00 · 83 · 34 4\n\
5191  40 @ 00 · 80 · 3c < 7f · 00 · ff · 2f / 00 ·\n\
5192 ");
5193 
5194  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,_T(__FILE__)));
5195 }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
virtual void Close()
Definition: DevMidF.cpp:336
virtual void Close()
Definition: DevMidF.cpp:651
bool CheckOut(mutString s, int line, const mutChar *file)
#define MUTABOR_NO_DELTA
Definition: timing.h:62
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:229
mutabor::Route route
Definition: DevMidFTest.h:230
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
static InputDevice CreateInput(int type, const mutStringRef name=mutEmptyString, MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1296
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
#define mutint64
Definition: Defs.h:70
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:455
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: DevMidFTest.h:231
void InputMidiFileTest::testBug019010 ( )

Definiert in Zeile 903 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

904 {
905 #ifdef DEBUG
906 // debugFlags::flags.timer = true;
907 // debugFlags::flags.midiio = true;
908 // debugFlags::flags.midifile = true;
909 #endif
910 
911  // input device is set up during setUp
912  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
913  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
914  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
915  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
916 
918  midicmnOutputDevice * out;
919  mutabor::ScopedBox box(NULL);
920  mutabor::ScopedRoute route;
922 
925  connect(route,box);
926 
928  out = new midicmnOutputDevice(_T("Test"));
929  out->SetBendingRange(2);
930  //out = new midicmnOutputDevice(3,_T("Test"));
931  guard = out;
932 
933  connect(route,guard);
934  route->SetOutputFrom (0);
935  route->SetOutputTo (15);
936  route->OutputAvoidDrumChannel (true);
937 
938  connect(route, in);
939 
940  CPPUNIT_ASSERT( in );
941  in -> SetName(_T(SRCDIR) _T("/bug019010.mid"));
942 
943 
944  // First check: Input device provides the correct delta times
947 
948 // in -> Play(wxTHREAD_JOINABLE);
950 
951  CPPUNIT_ASSERT(out->Check(_T("\
952 0 Opened...\n\
953 0 0: e0 00 40\n\
954 0 0: b0 7a 00\n\
955 0 0: b0 7d 00\n\
956 0 0: b0 7f 00\n\
957 0 0: b0 65 00\n\
958 0 0: b0 64 00\n\
959 0 0: b0 06 02\n\
960 0 0: b0 26 00\n\
961 0 1: e1 00 40\n\
962 0 1: b1 7a 00\n\
963 0 1: b1 7d 00\n\
964 0 1: b1 7f 00\n\
965 0 1: b1 65 00\n\
966 0 1: b1 64 00\n\
967 0 1: b1 06 02\n\
968 0 1: b1 26 00\n\
969 0 2: e2 00 40\n\
970 0 2: b2 7a 00\n\
971 0 2: b2 7d 00\n\
972 0 2: b2 7f 00\n\
973 0 2: b2 65 00\n\
974 0 2: b2 64 00\n\
975 0 2: b2 06 02\n\
976 0 2: b2 26 00\n\
977 0 3: e3 00 40\n\
978 0 3: b3 7a 00\n\
979 0 3: b3 7d 00\n\
980 0 3: b3 7f 00\n\
981 0 3: b3 65 00\n\
982 0 3: b3 64 00\n\
983 0 3: b3 06 02\n\
984 0 3: b3 26 00\n\
985 0 4: e4 00 40\n\
986 0 4: b4 7a 00\n\
987 0 4: b4 7d 00\n\
988 0 4: b4 7f 00\n\
989 0 4: b4 65 00\n\
990 0 4: b4 64 00\n\
991 0 4: b4 06 02\n\
992 0 4: b4 26 00\n\
993 0 5: e5 00 40\n\
994 0 5: b5 7a 00\n\
995 0 5: b5 7d 00\n\
996 0 5: b5 7f 00\n\
997 0 5: b5 65 00\n\
998 0 5: b5 64 00\n\
999 0 5: b5 06 02\n\
1000 0 5: b5 26 00\n\
1001 0 6: e6 00 40\n\
1002 0 6: b6 7a 00\n\
1003 0 6: b6 7d 00\n\
1004 0 6: b6 7f 00\n\
1005 0 6: b6 65 00\n\
1006 0 6: b6 64 00\n\
1007 0 6: b6 06 02\n\
1008 0 6: b6 26 00\n\
1009 0 7: e7 00 40\n\
1010 0 7: b7 7a 00\n\
1011 0 7: b7 7d 00\n\
1012 0 7: b7 7f 00\n\
1013 0 7: b7 65 00\n\
1014 0 7: b7 64 00\n\
1015 0 7: b7 06 02\n\
1016 0 7: b7 26 00\n\
1017 0 8: e8 00 40\n\
1018 0 8: b8 7a 00\n\
1019 0 8: b8 7d 00\n\
1020 0 8: b8 7f 00\n\
1021 0 8: b8 65 00\n\
1022 0 8: b8 64 00\n\
1023 0 8: b8 06 02\n\
1024 0 8: b8 26 00\n\
1025 0 9: e9 00 40\n\
1026 0 9: b9 7a 00\n\
1027 0 9: b9 7d 00\n\
1028 0 9: b9 7f 00\n\
1029 0 9: b9 65 00\n\
1030 0 9: b9 64 00\n\
1031 0 9: b9 06 02\n\
1032 0 9: b9 26 00\n\
1033 0 10: ea 00 40\n\
1034 0 10: ba 7a 00\n\
1035 0 10: ba 7d 00\n\
1036 0 10: ba 7f 00\n\
1037 0 10: ba 65 00\n\
1038 0 10: ba 64 00\n\
1039 0 10: ba 06 02\n\
1040 0 10: ba 26 00\n\
1041 0 11: eb 00 40\n\
1042 0 11: bb 7a 00\n\
1043 0 11: bb 7d 00\n\
1044 0 11: bb 7f 00\n\
1045 0 11: bb 65 00\n\
1046 0 11: bb 64 00\n\
1047 0 11: bb 06 02\n\
1048 0 11: bb 26 00\n\
1049 0 12: ec 00 40\n\
1050 0 12: bc 7a 00\n\
1051 0 12: bc 7d 00\n\
1052 0 12: bc 7f 00\n\
1053 0 12: bc 65 00\n\
1054 0 12: bc 64 00\n\
1055 0 12: bc 06 02\n\
1056 0 12: bc 26 00\n\
1057 0 13: ed 00 40\n\
1058 0 13: bd 7a 00\n\
1059 0 13: bd 7d 00\n\
1060 0 13: bd 7f 00\n\
1061 0 13: bd 65 00\n\
1062 0 13: bd 64 00\n\
1063 0 13: bd 06 02\n\
1064 0 13: bd 26 00\n\
1065 0 14: ee 00 40\n\
1066 0 14: be 7a 00\n\
1067 0 14: be 7d 00\n\
1068 0 14: be 7f 00\n\
1069 0 14: be 65 00\n\
1070 0 14: be 64 00\n\
1071 0 14: be 06 02\n\
1072 0 14: be 26 00\n\
1073 0 15: ef 00 40\n\
1074 0 15: bf 7a 00\n\
1075 0 15: bf 7d 00\n\
1076 0 15: bf 7f 00\n\
1077 0 15: bf 65 00\n\
1078 0 15: bf 64 00\n\
1079 0 15: bf 06 02\n\
1080 0 15: bf 26 00\n\
1081 21711080 0: 90 3c 7f\n\
1082 32310240 1: 91 40 1f\n\
1083 42640240 1: 81 40 40\n\
1084 52970240 2: 92 43 3f\n\
1085 63300240 2: 82 43 40\n\
1086 77209720 3: 93 34 7f\n\
1087 90738200 3: 83 34 40\n\
1088 104248200 0: 80 3c 7f\n\
1089 104248200 ...closed.\n\
1090 "),__LINE__,_T(__FILE__)));
1091 
1092  sleep(1);
1093 
1095 
1096  CPPUNIT_ASSERT(out->Check(_T("\
1097 0 Opened...\n\
1098 0 0: e0 00 40\n\
1099 0 0: b0 7a 00\n\
1100 0 0: b0 7d 00\n\
1101 0 0: b0 7f 00\n\
1102 0 0: b0 65 00\n\
1103 0 0: b0 64 00\n\
1104 0 0: b0 06 02\n\
1105 0 0: b0 26 00\n\
1106 0 1: e1 00 40\n\
1107 0 1: b1 7a 00\n\
1108 0 1: b1 7d 00\n\
1109 0 1: b1 7f 00\n\
1110 0 1: b1 65 00\n\
1111 0 1: b1 64 00\n\
1112 0 1: b1 06 02\n\
1113 0 1: b1 26 00\n\
1114 0 2: e2 00 40\n\
1115 0 2: b2 7a 00\n\
1116 0 2: b2 7d 00\n\
1117 0 2: b2 7f 00\n\
1118 0 2: b2 65 00\n\
1119 0 2: b2 64 00\n\
1120 0 2: b2 06 02\n\
1121 0 2: b2 26 00\n\
1122 0 3: e3 00 40\n\
1123 0 3: b3 7a 00\n\
1124 0 3: b3 7d 00\n\
1125 0 3: b3 7f 00\n\
1126 0 3: b3 65 00\n\
1127 0 3: b3 64 00\n\
1128 0 3: b3 06 02\n\
1129 0 3: b3 26 00\n\
1130 0 4: e4 00 40\n\
1131 0 4: b4 7a 00\n\
1132 0 4: b4 7d 00\n\
1133 0 4: b4 7f 00\n\
1134 0 4: b4 65 00\n\
1135 0 4: b4 64 00\n\
1136 0 4: b4 06 02\n\
1137 0 4: b4 26 00\n\
1138 0 5: e5 00 40\n\
1139 0 5: b5 7a 00\n\
1140 0 5: b5 7d 00\n\
1141 0 5: b5 7f 00\n\
1142 0 5: b5 65 00\n\
1143 0 5: b5 64 00\n\
1144 0 5: b5 06 02\n\
1145 0 5: b5 26 00\n\
1146 0 6: e6 00 40\n\
1147 0 6: b6 7a 00\n\
1148 0 6: b6 7d 00\n\
1149 0 6: b6 7f 00\n\
1150 0 6: b6 65 00\n\
1151 0 6: b6 64 00\n\
1152 0 6: b6 06 02\n\
1153 0 6: b6 26 00\n\
1154 0 7: e7 00 40\n\
1155 0 7: b7 7a 00\n\
1156 0 7: b7 7d 00\n\
1157 0 7: b7 7f 00\n\
1158 0 7: b7 65 00\n\
1159 0 7: b7 64 00\n\
1160 0 7: b7 06 02\n\
1161 0 7: b7 26 00\n\
1162 0 8: e8 00 40\n\
1163 0 8: b8 7a 00\n\
1164 0 8: b8 7d 00\n\
1165 0 8: b8 7f 00\n\
1166 0 8: b8 65 00\n\
1167 0 8: b8 64 00\n\
1168 0 8: b8 06 02\n\
1169 0 8: b8 26 00\n\
1170 0 9: e9 00 40\n\
1171 0 9: b9 7a 00\n\
1172 0 9: b9 7d 00\n\
1173 0 9: b9 7f 00\n\
1174 0 9: b9 65 00\n\
1175 0 9: b9 64 00\n\
1176 0 9: b9 06 02\n\
1177 0 9: b9 26 00\n\
1178 0 10: ea 00 40\n\
1179 0 10: ba 7a 00\n\
1180 0 10: ba 7d 00\n\
1181 0 10: ba 7f 00\n\
1182 0 10: ba 65 00\n\
1183 0 10: ba 64 00\n\
1184 0 10: ba 06 02\n\
1185 0 10: ba 26 00\n\
1186 0 11: eb 00 40\n\
1187 0 11: bb 7a 00\n\
1188 0 11: bb 7d 00\n\
1189 0 11: bb 7f 00\n\
1190 0 11: bb 65 00\n\
1191 0 11: bb 64 00\n\
1192 0 11: bb 06 02\n\
1193 0 11: bb 26 00\n\
1194 0 12: ec 00 40\n\
1195 0 12: bc 7a 00\n\
1196 0 12: bc 7d 00\n\
1197 0 12: bc 7f 00\n\
1198 0 12: bc 65 00\n\
1199 0 12: bc 64 00\n\
1200 0 12: bc 06 02\n\
1201 0 12: bc 26 00\n\
1202 0 13: ed 00 40\n\
1203 0 13: bd 7a 00\n\
1204 0 13: bd 7d 00\n\
1205 0 13: bd 7f 00\n\
1206 0 13: bd 65 00\n\
1207 0 13: bd 64 00\n\
1208 0 13: bd 06 02\n\
1209 0 13: bd 26 00\n\
1210 0 14: ee 00 40\n\
1211 0 14: be 7a 00\n\
1212 0 14: be 7d 00\n\
1213 0 14: be 7f 00\n\
1214 0 14: be 65 00\n\
1215 0 14: be 64 00\n\
1216 0 14: be 06 02\n\
1217 0 14: be 26 00\n\
1218 0 15: ef 00 40\n\
1219 0 15: bf 7a 00\n\
1220 0 15: bf 7d 00\n\
1221 0 15: bf 7f 00\n\
1222 0 15: bf 65 00\n\
1223 0 15: bf 64 00\n\
1224 0 15: bf 06 02\n\
1225 0 15: bf 26 00\n\
1226 21711080 0: 90 3c 7f\n\
1227 32310240 1: 91 40 1f\n\
1228 42640240 1: 81 40 40\n\
1229 52970240 2: 92 43 3f\n\
1230 63300240 2: 82 43 40\n\
1231 77209720 3: 93 34 7f\n\
1232 90738200 3: 83 34 40\n\
1233 104248200 0: 80 3c 7f\n\
1234 104248200 ...closed.\n\
1235 "),__LINE__,_T(__FILE__)));
1236 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
mutabor::InputDevice in
Definition: DevMidFTest.h:78
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
void SetBendingRange(int br)
Definition: midicmn.h:550
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:455
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:592
void InputMidiFileTest::testBug019010_2 ( )

Definiert in Zeile 565 der Datei DevMidFTest.cpp.

Benutzt mutabor::Box0, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, DEBUGLOG, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, MUTABOR_NO_DELTA, mutint64, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

566 {
567 #ifdef DEBUG
568 // debugFlags::flags.timer = true;
569 // debugFlags::flags.midiio = true;
570 // debugFlags::flags.midifile = true;
571 #endif
572 
573  // input device is created during setUp
574  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
575  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
576  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
577  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
578 
580  midicmnOutputDevice * out;
581  mutabor::ScopedBox box(NULL);
582  mutabor::ScopedRoute route;
584 
587  connect(route,box);
588 
590  out = new midicmnOutputDevice(_T("Test"));
591  out->SetBendingRange(2);
592  //out = new midicmnOutputDevice(3,_T("Test"));
593  guard = out;
594 
595  connect(route,guard);
596  route->SetOutputFrom (0);
597  route->SetOutputTo (15);
598  route->OutputAvoidDrumChannel (true);
599 
600  connect(route, in);
601 
602  CPPUNIT_ASSERT( in );
603  in -> SetName(_T(SRCDIR) _T("/bug019010.mid"));
604 
605 
606  // First check: Input device provides the correct delta times
609 
610  CPPUNIT_ASSERT((out -> Open()));
611  CPPUNIT_ASSERT((in -> Open()));
612  CPPUNIT_ASSERT(out->Check(_T("0 Opened...\n\
613 0 0: e0 00 40\n\
614 0 0: b0 7a 00\n\
615 0 0: b0 7d 00\n\
616 0 0: b0 7f 00\n\
617 0 0: b0 65 00\n\
618 0 0: b0 64 00\n\
619 0 0: b0 06 02\n\
620 0 0: b0 26 00\n\
621 0 1: e1 00 40\n\
622 0 1: b1 7a 00\n\
623 0 1: b1 7d 00\n\
624 0 1: b1 7f 00\n\
625 0 1: b1 65 00\n\
626 0 1: b1 64 00\n\
627 0 1: b1 06 02\n\
628 0 1: b1 26 00\n\
629 0 2: e2 00 40\n\
630 0 2: b2 7a 00\n\
631 0 2: b2 7d 00\n\
632 0 2: b2 7f 00\n\
633 0 2: b2 65 00\n\
634 0 2: b2 64 00\n\
635 0 2: b2 06 02\n\
636 0 2: b2 26 00\n\
637 0 3: e3 00 40\n\
638 0 3: b3 7a 00\n\
639 0 3: b3 7d 00\n\
640 0 3: b3 7f 00\n\
641 0 3: b3 65 00\n\
642 0 3: b3 64 00\n\
643 0 3: b3 06 02\n\
644 0 3: b3 26 00\n\
645 0 4: e4 00 40\n\
646 0 4: b4 7a 00\n\
647 0 4: b4 7d 00\n\
648 0 4: b4 7f 00\n\
649 0 4: b4 65 00\n\
650 0 4: b4 64 00\n\
651 0 4: b4 06 02\n\
652 0 4: b4 26 00\n\
653 0 5: e5 00 40\n\
654 0 5: b5 7a 00\n\
655 0 5: b5 7d 00\n\
656 0 5: b5 7f 00\n\
657 0 5: b5 65 00\n\
658 0 5: b5 64 00\n\
659 0 5: b5 06 02\n\
660 0 5: b5 26 00\n\
661 0 6: e6 00 40\n\
662 0 6: b6 7a 00\n\
663 0 6: b6 7d 00\n\
664 0 6: b6 7f 00\n\
665 0 6: b6 65 00\n\
666 0 6: b6 64 00\n\
667 0 6: b6 06 02\n\
668 0 6: b6 26 00\n\
669 0 7: e7 00 40\n\
670 0 7: b7 7a 00\n\
671 0 7: b7 7d 00\n\
672 0 7: b7 7f 00\n\
673 0 7: b7 65 00\n\
674 0 7: b7 64 00\n\
675 0 7: b7 06 02\n\
676 0 7: b7 26 00\n\
677 0 8: e8 00 40\n\
678 0 8: b8 7a 00\n\
679 0 8: b8 7d 00\n\
680 0 8: b8 7f 00\n\
681 0 8: b8 65 00\n\
682 0 8: b8 64 00\n\
683 0 8: b8 06 02\n\
684 0 8: b8 26 00\n\
685 0 9: e9 00 40\n\
686 0 9: b9 7a 00\n\
687 0 9: b9 7d 00\n\
688 0 9: b9 7f 00\n\
689 0 9: b9 65 00\n\
690 0 9: b9 64 00\n\
691 0 9: b9 06 02\n\
692 0 9: b9 26 00\n\
693 0 10: ea 00 40\n\
694 0 10: ba 7a 00\n\
695 0 10: ba 7d 00\n\
696 0 10: ba 7f 00\n\
697 0 10: ba 65 00\n\
698 0 10: ba 64 00\n\
699 0 10: ba 06 02\n\
700 0 10: ba 26 00\n\
701 0 11: eb 00 40\n\
702 0 11: bb 7a 00\n\
703 0 11: bb 7d 00\n\
704 0 11: bb 7f 00\n\
705 0 11: bb 65 00\n\
706 0 11: bb 64 00\n\
707 0 11: bb 06 02\n\
708 0 11: bb 26 00\n\
709 0 12: ec 00 40\n\
710 0 12: bc 7a 00\n\
711 0 12: bc 7d 00\n\
712 0 12: bc 7f 00\n\
713 0 12: bc 65 00\n\
714 0 12: bc 64 00\n\
715 0 12: bc 06 02\n\
716 0 12: bc 26 00\n\
717 0 13: ed 00 40\n\
718 0 13: bd 7a 00\n\
719 0 13: bd 7d 00\n\
720 0 13: bd 7f 00\n\
721 0 13: bd 65 00\n\
722 0 13: bd 64 00\n\
723 0 13: bd 06 02\n\
724 0 13: bd 26 00\n\
725 0 14: ee 00 40\n\
726 0 14: be 7a 00\n\
727 0 14: be 7d 00\n\
728 0 14: be 7f 00\n\
729 0 14: be 65 00\n\
730 0 14: be 64 00\n\
731 0 14: be 06 02\n\
732 0 14: be 26 00\n\
733 0 15: ef 00 40\n\
734 0 15: bf 7a 00\n\
735 0 15: bf 7d 00\n\
736 0 15: bf 7f 00\n\
737 0 15: bf 65 00\n\
738 0 15: bf 64 00\n\
739 0 15: bf 06 02\n\
740 0 15: bf 26 00\n"),__LINE__,_T(__FILE__)));
741 
742 // in -> Play(wxTHREAD_JOINABLE);
743 // mutabor::InputDeviceClass::BatchPlay();
744  in -> Play();
745  mutint64 delta = in -> PrepareNextEvent();
746  DEBUGLOG(midiio,_T("delta = %d"),delta);
747  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
748  CPPUNIT_ASSERT(delta == 1086);
749 
750  delta = in -> PrepareNextEvent();
751  DEBUGLOG(midiio,_T("delta = %d"),delta);
752  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
753  CPPUNIT_ASSERT(delta == 1954800);
754 
755  delta = in -> PrepareNextEvent();
756  DEBUGLOG(midiio,_T("delta = %d"),delta);
757  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
758  CPPUNIT_ASSERT(delta == 14725074);
759 
760  delta = in -> PrepareNextEvent();
761  DEBUGLOG(midiio,_T("delta = %d"),delta);
762  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
763  CPPUNIT_ASSERT(delta == 130320);
764 
765  delta = in -> PrepareNextEvent();
766  DEBUGLOG(midiio,_T("delta = %d"),delta);
767  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
768  CPPUNIT_ASSERT(delta == 130200);
769 
770  delta = in -> PrepareNextEvent();
771  DEBUGLOG(midiio,_T("delta = %d"),delta);
772  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
773  CPPUNIT_ASSERT(delta == 4769600);
774 
775  delta = in -> PrepareNextEvent();
776  DEBUGLOG(midiio,_T("delta = %d"),delta);
777  CPPUNIT_ASSERT(out->Check(_T("\
778 0 0: 90 3c 7f\n\
779 "),
780  __LINE__,_T(__FILE__)));
781  CPPUNIT_ASSERT(delta == 6287200);
782 
783  delta = in -> PrepareNextEvent();
784  DEBUGLOG(midiio,_T("delta = %d"),delta);
785  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
786  CPPUNIT_ASSERT(delta == 845040);
787 
788  delta = in -> PrepareNextEvent();
789  DEBUGLOG(midiio,_T("delta = %d"),delta);
790  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
791  CPPUNIT_ASSERT(delta == 120000);
792 
793  delta = in -> PrepareNextEvent();
794  DEBUGLOG(midiio,_T("delta = %d"),delta);
795  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
796  CPPUNIT_ASSERT(delta == 123960);
797 
798  delta = in -> PrepareNextEvent();
799  DEBUGLOG(midiio,_T("delta = %d"),delta);
800  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
801  CPPUNIT_ASSERT(delta == 3222960);
802 
803  delta = in -> PrepareNextEvent();
804  DEBUGLOG(midiio,_T("delta = %d"),delta);
805  CPPUNIT_ASSERT(out->Check(_T("\
806 0 1: 91 40 1f\n\
807 "),__LINE__,_T(__FILE__)));
808  CPPUNIT_ASSERT(delta == 10330000);
809 
810  delta = in -> PrepareNextEvent();
811  DEBUGLOG(midiio,_T("delta = %d"),delta);
812  CPPUNIT_ASSERT(out->Check(_T("\
813 0 1: 81 40 40\n\
814 "),__LINE__,_T(__FILE__)));
815  CPPUNIT_ASSERT(delta == 10330000);
816 
817  delta = in -> PrepareNextEvent();
818  DEBUGLOG(midiio,_T("delta = %d"),delta);
819  CPPUNIT_ASSERT(out->Check(_T("\
820 0 2: 92 43 3f\n\
821 "),__LINE__,_T(__FILE__)));
822  CPPUNIT_ASSERT(delta == 10330000);
823 
824  delta = in -> PrepareNextEvent();
825  DEBUGLOG(midiio,_T("delta = %d"),delta);
826  CPPUNIT_ASSERT(out->Check(_T("0 2: 82 43 40\n"),__LINE__,_T(__FILE__)));
827  CPPUNIT_ASSERT(delta == 7809480);
828 
829  delta = in -> PrepareNextEvent();
830  DEBUGLOG(midiio,_T("delta = %d"),delta);
831  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
832  CPPUNIT_ASSERT(delta == 6100000);
833 
834  delta = in -> PrepareNextEvent();
835  DEBUGLOG(midiio,_T("delta = %d"),delta);
836  CPPUNIT_ASSERT(out->Check(_T("\
837 0 3: 93 34 7f\n\
838 "),__LINE__,_T(__FILE__)));
839  CPPUNIT_ASSERT(delta == 200000);
840 
841  delta = in -> PrepareNextEvent();
842  DEBUGLOG(midiio,_T("delta = %d"),delta);
843  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
844  CPPUNIT_ASSERT(delta == 146280);
845 
846  delta = in -> PrepareNextEvent();
847  DEBUGLOG(midiio,_T("delta = %d"),delta);
848  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
849  CPPUNIT_ASSERT(delta == 148080);
850 
851  delta = in -> PrepareNextEvent();
852  DEBUGLOG(midiio,_T("delta = %d"),delta);
853  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
854  CPPUNIT_ASSERT(delta == 150000);
855 
856  delta = in -> PrepareNextEvent();
857  DEBUGLOG(midiio,_T("delta = %d"),delta);
858  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
859  CPPUNIT_ASSERT(delta == 151800);
860 
861  delta = in -> PrepareNextEvent();
862  DEBUGLOG(midiio,_T("delta = %d"),delta);
863  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
864  CPPUNIT_ASSERT(delta == 153840);
865 
866  delta = in -> PrepareNextEvent();
867  DEBUGLOG(midiio,_T("delta = %d"),delta);
868  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
869  CPPUNIT_ASSERT(delta == 155760);
870 
871  delta = in -> PrepareNextEvent();
872  DEBUGLOG(midiio,_T("delta = %d"),delta);
873  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
874  CPPUNIT_ASSERT(delta == 157800);
875 
876  delta = in -> PrepareNextEvent();
877  DEBUGLOG(midiio,_T("delta = %d"),delta);
878  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
879  CPPUNIT_ASSERT(delta == 159960);
880 
881  delta = in -> PrepareNextEvent();
882  DEBUGLOG(midiio,_T("delta = %d"),delta);
883  CPPUNIT_ASSERT(out->Check(_T(""),__LINE__,_T(__FILE__)));
884  CPPUNIT_ASSERT(delta == 12104960);
885 
886  delta = in -> PrepareNextEvent();
887  DEBUGLOG(midiio,_T("delta = %d"),delta);
888  CPPUNIT_ASSERT(out->Check(_T("0 3: 83 34 40\n"),__LINE__,_T(__FILE__)));
889  CPPUNIT_ASSERT(delta == 13510000);
890 
891  delta = in -> PrepareNextEvent();
892  DEBUGLOG(midiio,_T("delta = %d"),delta);
893  CPPUNIT_ASSERT(out->Check(_T("0 0: 80 3c 7f\n"),__LINE__,_T(__FILE__)));
894  CPPUNIT_ASSERT(delta == MUTABOR_NO_DELTA);
895 
896  in->Close();
897  out->Close();
898  CPPUNIT_ASSERT(out->Check(_T("0 ...closed.\n"),__LINE__,_T(__FILE__)));
899 
900 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
mutabor::InputDevice in
Definition: DevMidFTest.h:78
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
#define MUTABOR_NO_DELTA
Definition: timing.h:62
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
#define mutint64
Definition: Defs.h:70
void SetBendingRange(int br)
Definition: midicmn.h:550
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:592
void InputMidiFileTest::testControllerPlay ( )

Definiert in Zeile 1668 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

1669 {
1670 #ifdef DEBUG
1671 // debugFlags::flags.timer = true;
1672 // debugFlags::flags.midiio = true;
1673 // debugFlags::flags.midifile = true;
1674 #endif
1675 
1676  // input device is set up during setUp
1677  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1678  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1679  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1680  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1681 
1683  midicmnOutputDevice * out;
1684  mutabor::ScopedBox box(NULL);
1685  mutabor::ScopedRoute route;
1687 
1690  connect(route,box);
1691 
1693  out = new midicmnOutputDevice(_T("Test"));
1694  out->SetBendingRange(2);
1695  //out = new midicmnOutputDevice(3,_T("Test"));
1696  guard = out;
1697 
1698  connect(route,guard);
1699  route->SetOutputFrom (0);
1700  route->SetOutputTo (15);
1701  route->OutputAvoidDrumChannel (true);
1702 
1703  connect(route, in);
1704 
1705  CPPUNIT_ASSERT( in );
1706  in -> SetName(_T(SRCDIR) _T("/controller.mid"));
1707 
1708 
1709  // First check: Input device provides the correct delta times
1712 
1713 // in -> Play(wxTHREAD_JOINABLE);
1715 
1716  CPPUNIT_ASSERT(out->Check(_T("\
1717 0 Opened...\n\
1718 0 0: e0 00 40\n\
1719 0 0: b0 7a 00\n\
1720 0 0: b0 7d 00\n\
1721 0 0: b0 7f 00\n\
1722 0 0: b0 65 00\n\
1723 0 0: b0 64 00\n\
1724 0 0: b0 06 02\n\
1725 0 0: b0 26 00\n\
1726 0 1: e1 00 40\n\
1727 0 1: b1 7a 00\n\
1728 0 1: b1 7d 00\n\
1729 0 1: b1 7f 00\n\
1730 0 1: b1 65 00\n\
1731 0 1: b1 64 00\n\
1732 0 1: b1 06 02\n\
1733 0 1: b1 26 00\n\
1734 0 2: e2 00 40\n\
1735 0 2: b2 7a 00\n\
1736 0 2: b2 7d 00\n\
1737 0 2: b2 7f 00\n\
1738 0 2: b2 65 00\n\
1739 0 2: b2 64 00\n\
1740 0 2: b2 06 02\n\
1741 0 2: b2 26 00\n\
1742 0 3: e3 00 40\n\
1743 0 3: b3 7a 00\n\
1744 0 3: b3 7d 00\n\
1745 0 3: b3 7f 00\n\
1746 0 3: b3 65 00\n\
1747 0 3: b3 64 00\n\
1748 0 3: b3 06 02\n\
1749 0 3: b3 26 00\n\
1750 0 4: e4 00 40\n\
1751 0 4: b4 7a 00\n\
1752 0 4: b4 7d 00\n\
1753 0 4: b4 7f 00\n\
1754 0 4: b4 65 00\n\
1755 0 4: b4 64 00\n\
1756 0 4: b4 06 02\n\
1757 0 4: b4 26 00\n\
1758 0 5: e5 00 40\n\
1759 0 5: b5 7a 00\n\
1760 0 5: b5 7d 00\n\
1761 0 5: b5 7f 00\n\
1762 0 5: b5 65 00\n\
1763 0 5: b5 64 00\n\
1764 0 5: b5 06 02\n\
1765 0 5: b5 26 00\n\
1766 0 6: e6 00 40\n\
1767 0 6: b6 7a 00\n\
1768 0 6: b6 7d 00\n\
1769 0 6: b6 7f 00\n\
1770 0 6: b6 65 00\n\
1771 0 6: b6 64 00\n\
1772 0 6: b6 06 02\n\
1773 0 6: b6 26 00\n\
1774 0 7: e7 00 40\n\
1775 0 7: b7 7a 00\n\
1776 0 7: b7 7d 00\n\
1777 0 7: b7 7f 00\n\
1778 0 7: b7 65 00\n\
1779 0 7: b7 64 00\n\
1780 0 7: b7 06 02\n\
1781 0 7: b7 26 00\n\
1782 0 8: e8 00 40\n\
1783 0 8: b8 7a 00\n\
1784 0 8: b8 7d 00\n\
1785 0 8: b8 7f 00\n\
1786 0 8: b8 65 00\n\
1787 0 8: b8 64 00\n\
1788 0 8: b8 06 02\n\
1789 0 8: b8 26 00\n\
1790 0 9: e9 00 40\n\
1791 0 9: b9 7a 00\n\
1792 0 9: b9 7d 00\n\
1793 0 9: b9 7f 00\n\
1794 0 9: b9 65 00\n\
1795 0 9: b9 64 00\n\
1796 0 9: b9 06 02\n\
1797 0 9: b9 26 00\n\
1798 0 10: ea 00 40\n\
1799 0 10: ba 7a 00\n\
1800 0 10: ba 7d 00\n\
1801 0 10: ba 7f 00\n\
1802 0 10: ba 65 00\n\
1803 0 10: ba 64 00\n\
1804 0 10: ba 06 02\n\
1805 0 10: ba 26 00\n\
1806 0 11: eb 00 40\n\
1807 0 11: bb 7a 00\n\
1808 0 11: bb 7d 00\n\
1809 0 11: bb 7f 00\n\
1810 0 11: bb 65 00\n\
1811 0 11: bb 64 00\n\
1812 0 11: bb 06 02\n\
1813 0 11: bb 26 00\n\
1814 0 12: ec 00 40\n\
1815 0 12: bc 7a 00\n\
1816 0 12: bc 7d 00\n\
1817 0 12: bc 7f 00\n\
1818 0 12: bc 65 00\n\
1819 0 12: bc 64 00\n\
1820 0 12: bc 06 02\n\
1821 0 12: bc 26 00\n\
1822 0 13: ed 00 40\n\
1823 0 13: bd 7a 00\n\
1824 0 13: bd 7d 00\n\
1825 0 13: bd 7f 00\n\
1826 0 13: bd 65 00\n\
1827 0 13: bd 64 00\n\
1828 0 13: bd 06 02\n\
1829 0 13: bd 26 00\n\
1830 0 14: ee 00 40\n\
1831 0 14: be 7a 00\n\
1832 0 14: be 7d 00\n\
1833 0 14: be 7f 00\n\
1834 0 14: be 65 00\n\
1835 0 14: be 64 00\n\
1836 0 14: be 06 02\n\
1837 0 14: be 26 00\n\
1838 0 15: ef 00 40\n\
1839 0 15: bf 7a 00\n\
1840 0 15: bf 7d 00\n\
1841 0 15: bf 7f 00\n\
1842 0 15: bf 65 00\n\
1843 0 15: bf 64 00\n\
1844 0 15: bf 06 02\n\
1845 0 15: bf 26 00\n\
1846 0 0: 90 3c 7f\n\
1847 1 0: b0 00 37\n\
1848 2 0: b0 00 6e\n\
1849 3 0: b0 00 00\n\
1850 4 0: b0 00 25\n\
1851 5 0: b0 01 5c\n\
1852 6 0: b0 01 13\n\
1853 7 0: b0 01 00\n\
1854 8 0: b0 01 4a\n\
1855 9 0: b0 02 01\n\
1856 10 0: b0 02 38\n\
1857 11 0: b0 02 00\n\
1858 12 0: b0 02 6f\n\
1859 13 0: b0 03 26\n\
1860 14 0: b0 03 5d\n\
1861 15 0: b0 03 00\n\
1862 16 0: b0 03 14\n\
1863 17 0: b0 04 4b\n\
1864 18 0: b0 04 02\n\
1865 19 0: b0 04 00\n\
1866 20 0: b0 04 39\n\
1867 21 0: b0 05 70\n\
1868 22 0: b0 05 27\n\
1869 23 0: b0 05 00\n\
1870 24 0: b0 05 5e\n\
1871 29 0: b0 07 3a\n\
1872 30 0: b0 07 71\n\
1873 31 0: b0 07 00\n\
1874 32 0: b0 07 28\n\
1875 33 0: b0 08 5f\n\
1876 34 0: b0 08 16\n\
1877 35 0: b0 08 00\n\
1878 36 0: b0 08 4d\n\
1879 37 0: b0 09 04\n\
1880 38 0: b0 09 3b\n\
1881 39 0: b0 09 00\n\
1882 40 0: b0 09 72\n\
1883 41 0: b0 0a 29\n\
1884 42 0: b0 0a 60\n\
1885 43 0: b0 0a 00\n\
1886 44 0: b0 0a 17\n\
1887 45 0: b0 0b 4e\n\
1888 46 0: b0 0b 05\n\
1889 47 0: b0 0b 00\n\
1890 48 0: b0 0b 3c\n\
1891 49 0: b0 0c 73\n\
1892 50 0: b0 0c 2a\n\
1893 51 0: b0 0c 00\n\
1894 52 0: b0 0c 61\n\
1895 53 0: b0 0d 18\n\
1896 54 0: b0 0d 4f\n\
1897 55 0: b0 0d 00\n\
1898 56 0: b0 0d 06\n\
1899 57 0: b0 0e 3d\n\
1900 58 0: b0 0e 74\n\
1901 59 0: b0 0e 00\n\
1902 60 0: b0 0e 2b\n\
1903 61 0: b0 0f 62\n\
1904 62 0: b0 0f 19\n\
1905 63 0: b0 0f 00\n\
1906 64 0: b0 0f 50\n\
1907 65 0: b0 10 07\n\
1908 66 0: b0 10 3e\n\
1909 67 0: b0 10 00\n\
1910 68 0: b0 10 75\n\
1911 69 0: b0 11 2c\n\
1912 70 0: b0 11 63\n\
1913 71 0: b0 11 00\n\
1914 72 0: b0 11 1a\n\
1915 73 0: b0 12 51\n\
1916 74 0: b0 12 08\n\
1917 75 0: b0 12 00\n\
1918 76 0: b0 12 3f\n\
1919 77 0: b0 13 76\n\
1920 78 0: b0 13 2d\n\
1921 79 0: b0 13 00\n\
1922 80 0: b0 13 64\n\
1923 81 0: b0 14 1b\n\
1924 82 0: b0 14 52\n\
1925 83 0: b0 14 00\n\
1926 84 0: b0 14 09\n\
1927 85 0: b0 15 40\n\
1928 86 0: b0 15 77\n\
1929 87 0: b0 15 00\n\
1930 88 0: b0 15 2e\n\
1931 89 0: b0 16 65\n\
1932 90 0: b0 16 1c\n\
1933 91 0: b0 16 00\n\
1934 92 0: b0 16 53\n\
1935 93 0: b0 17 0a\n\
1936 94 0: b0 17 41\n\
1937 95 0: b0 17 00\n\
1938 96 0: b0 17 78\n\
1939 97 0: b0 18 2f\n\
1940 98 0: b0 18 66\n\
1941 99 0: b0 18 00\n\
1942 100 0: b0 18 1d\n\
1943 101 0: b0 19 54\n\
1944 102 0: b0 19 0b\n\
1945 103 0: b0 19 00\n\
1946 104 0: b0 19 42\n\
1947 105 0: b0 1a 79\n\
1948 106 0: b0 1a 30\n\
1949 107 0: b0 1a 00\n\
1950 108 0: b0 1a 67\n\
1951 109 0: b0 1b 1e\n\
1952 110 0: b0 1b 55\n\
1953 111 0: b0 1b 00\n\
1954 112 0: b0 1b 0c\n\
1955 113 0: b0 1c 43\n\
1956 114 0: b0 1c 7a\n\
1957 115 0: b0 1c 00\n\
1958 116 0: b0 1c 31\n\
1959 117 0: b0 1d 68\n\
1960 118 0: b0 1d 1f\n\
1961 119 0: b0 1d 00\n\
1962 120 0: b0 1d 56\n\
1963 121 0: b0 1e 0d\n\
1964 122 0: b0 1e 44\n\
1965 123 0: b0 1e 00\n\
1966 124 0: b0 1e 7b\n\
1967 125 0: b0 1f 32\n\
1968 126 0: b0 1f 69\n\
1969 127 0: b0 1f 00\n\
1970 128 0: b0 1f 20\n\
1971 129 0: b0 20 57\n\
1972 130 0: b0 20 0e\n\
1973 131 0: b0 20 00\n\
1974 132 0: b0 20 45\n\
1975 133 0: b0 21 7c\n\
1976 134 0: b0 21 33\n\
1977 135 0: b0 21 00\n\
1978 136 0: b0 21 6a\n\
1979 137 0: b0 22 21\n\
1980 138 0: b0 22 58\n\
1981 139 0: b0 22 00\n\
1982 140 0: b0 22 0f\n\
1983 141 0: b0 23 46\n\
1984 142 0: b0 23 7d\n\
1985 143 0: b0 23 00\n\
1986 144 0: b0 23 34\n\
1987 145 0: b0 24 6b\n\
1988 146 0: b0 24 22\n\
1989 147 0: b0 24 00\n\
1990 148 0: b0 24 59\n\
1991 149 0: b0 25 10\n\
1992 150 0: b0 25 47\n\
1993 151 0: b0 25 00\n\
1994 152 0: b0 25 7e\n\
1995 157 0: b0 27 5a\n\
1996 158 0: b0 27 11\n\
1997 159 0: b0 27 00\n\
1998 160 0: b0 27 48\n\
1999 161 0: b0 28 7f\n\
2000 162 0: b0 28 36\n\
2001 163 0: b0 28 00\n\
2002 164 0: b0 28 6d\n\
2003 165 0: b0 29 24\n\
2004 166 0: b0 29 5b\n\
2005 167 0: b0 29 00\n\
2006 168 0: b0 29 12\n\
2007 169 0: b0 2a 49\n\
2008 170 0: b0 2a 00\n\
2009 172 0: b0 2a 37\n\
2010 173 0: b0 2b 6e\n\
2011 174 0: b0 2b 25\n\
2012 175 0: b0 2b 00\n\
2013 176 0: b0 2b 5c\n\
2014 177 0: b0 2c 13\n\
2015 178 0: b0 2c 4a\n\
2016 179 0: b0 2c 00\n\
2017 180 0: b0 2c 01\n\
2018 181 0: b0 2d 38\n\
2019 182 0: b0 2d 6f\n\
2020 183 0: b0 2d 00\n\
2021 184 0: b0 2d 26\n\
2022 185 0: b0 2e 5d\n\
2023 186 0: b0 2e 14\n\
2024 187 0: b0 2e 00\n\
2025 188 0: b0 2e 4b\n\
2026 189 0: b0 2f 02\n\
2027 190 0: b0 2f 39\n\
2028 191 0: b0 2f 00\n\
2029 192 0: b0 2f 70\n\
2030 193 0: b0 30 27\n\
2031 194 0: b0 30 5e\n\
2032 195 0: b0 30 00\n\
2033 196 0: b0 30 15\n\
2034 197 0: b0 31 4c\n\
2035 198 0: b0 31 03\n\
2036 199 0: b0 31 00\n\
2037 200 0: b0 31 3a\n\
2038 201 0: b0 32 71\n\
2039 202 0: b0 32 28\n\
2040 203 0: b0 32 00\n\
2041 204 0: b0 32 5f\n\
2042 205 0: b0 33 16\n\
2043 206 0: b0 33 4d\n\
2044 207 0: b0 33 00\n\
2045 208 0: b0 33 04\n\
2046 209 0: b0 34 3b\n\
2047 210 0: b0 34 72\n\
2048 211 0: b0 34 00\n\
2049 212 0: b0 34 29\n\
2050 213 0: b0 35 60\n\
2051 214 0: b0 35 17\n\
2052 215 0: b0 35 00\n\
2053 216 0: b0 35 4e\n\
2054 217 0: b0 36 05\n\
2055 218 0: b0 36 3c\n\
2056 219 0: b0 36 00\n\
2057 220 0: b0 36 73\n\
2058 221 0: b0 37 2a\n\
2059 222 0: b0 37 61\n\
2060 223 0: b0 37 00\n\
2061 224 0: b0 37 18\n\
2062 225 0: b0 38 4f\n\
2063 226 0: b0 38 06\n\
2064 227 0: b0 38 00\n\
2065 228 0: b0 38 3d\n\
2066 229 0: b0 39 74\n\
2067 230 0: b0 39 2b\n\
2068 231 0: b0 39 00\n\
2069 232 0: b0 39 62\n\
2070 233 0: b0 3a 19\n\
2071 234 0: b0 3a 50\n\
2072 235 0: b0 3a 00\n\
2073 236 0: b0 3a 07\n\
2074 237 0: b0 3b 3e\n\
2075 238 0: b0 3b 75\n\
2076 239 0: b0 3b 00\n\
2077 240 0: b0 3b 2c\n\
2078 241 0: b0 3c 63\n\
2079 242 0: b0 3c 1a\n\
2080 243 0: b0 3c 00\n\
2081 244 0: b0 3c 51\n\
2082 245 0: b0 3d 08\n\
2083 246 0: b0 3d 3f\n\
2084 247 0: b0 3d 00\n\
2085 248 0: b0 3d 76\n\
2086 249 0: b0 3e 2d\n\
2087 250 0: b0 3e 64\n\
2088 251 0: b0 3e 00\n\
2089 252 0: b0 3e 1b\n\
2090 253 0: b0 3f 52\n\
2091 254 0: b0 3f 09\n\
2092 255 0: b0 3f 00\n\
2093 256 0: b0 3f 40\n\
2094 257 0: b0 40 77\n\
2095 258 0: b0 40 2e\n\
2096 259 0: b0 40 00\n\
2097 260 0: b0 40 65\n\
2098 261 0: b0 41 1c\n\
2099 262 0: b0 41 53\n\
2100 263 0: b0 41 00\n\
2101 264 0: b0 41 0a\n\
2102 265 0: b0 42 41\n\
2103 266 0: b0 42 78\n\
2104 267 0: b0 42 00\n\
2105 268 0: b0 42 2f\n\
2106 269 0: b0 43 66\n\
2107 270 0: b0 43 1d\n\
2108 271 0: b0 43 00\n\
2109 272 0: b0 43 54\n\
2110 273 0: b0 44 0b\n\
2111 274 0: b0 44 42\n\
2112 275 0: b0 44 00\n\
2113 276 0: b0 44 79\n\
2114 277 0: b0 45 30\n\
2115 278 0: b0 45 67\n\
2116 279 0: b0 45 00\n\
2117 280 0: b0 45 1e\n\
2118 281 0: b0 46 55\n\
2119 282 0: b0 46 0c\n\
2120 283 0: b0 46 00\n\
2121 284 0: b0 46 43\n\
2122 285 0: b0 47 7a\n\
2123 286 0: b0 47 31\n\
2124 287 0: b0 47 00\n\
2125 288 0: b0 47 68\n\
2126 289 0: b0 48 1f\n\
2127 290 0: b0 48 56\n\
2128 291 0: b0 48 00\n\
2129 292 0: b0 48 0d\n\
2130 293 0: b0 49 44\n\
2131 294 0: b0 49 7b\n\
2132 295 0: b0 49 00\n\
2133 296 0: b0 49 32\n\
2134 297 0: b0 4a 69\n\
2135 298 0: b0 4a 20\n\
2136 299 0: b0 4a 00\n\
2137 300 0: b0 4a 57\n\
2138 301 0: b0 4b 0e\n\
2139 302 0: b0 4b 45\n\
2140 303 0: b0 4b 00\n\
2141 304 0: b0 4b 7c\n\
2142 305 0: b0 4c 33\n\
2143 306 0: b0 4c 6a\n\
2144 307 0: b0 4c 00\n\
2145 308 0: b0 4c 21\n\
2146 309 0: b0 4d 58\n\
2147 310 0: b0 4d 0f\n\
2148 311 0: b0 4d 00\n\
2149 312 0: b0 4d 46\n\
2150 313 0: b0 4e 7d\n\
2151 314 0: b0 4e 34\n\
2152 315 0: b0 4e 00\n\
2153 316 0: b0 4e 6b\n\
2154 317 0: b0 4f 22\n\
2155 318 0: b0 4f 59\n\
2156 319 0: b0 4f 00\n\
2157 320 0: b0 4f 10\n\
2158 321 0: b0 50 47\n\
2159 322 0: b0 50 7e\n\
2160 323 0: b0 50 00\n\
2161 324 0: b0 50 35\n\
2162 325 0: b0 51 6c\n\
2163 326 0: b0 51 23\n\
2164 327 0: b0 51 00\n\
2165 328 0: b0 51 5a\n\
2166 329 0: b0 52 11\n\
2167 330 0: b0 52 48\n\
2168 331 0: b0 52 00\n\
2169 332 0: b0 52 7f\n\
2170 333 0: b0 53 36\n\
2171 334 0: b0 53 6d\n\
2172 335 0: b0 53 00\n\
2173 336 0: b0 53 24\n\
2174 337 0: b0 54 5b\n\
2175 338 0: b0 54 12\n\
2176 339 0: b0 54 00\n\
2177 340 0: b0 54 49\n\
2178 341 0: b0 55 00\n\
2179 342 0: b0 55 37\n\
2180 343 0: b0 55 00\n\
2181 344 0: b0 55 6e\n\
2182 345 0: b0 56 25\n\
2183 346 0: b0 56 5c\n\
2184 347 0: b0 56 00\n\
2185 348 0: b0 56 13\n\
2186 349 0: b0 57 4a\n\
2187 350 0: b0 57 01\n\
2188 351 0: b0 57 00\n\
2189 352 0: b0 57 38\n\
2190 353 0: b0 58 6f\n\
2191 354 0: b0 58 26\n\
2192 355 0: b0 58 00\n\
2193 356 0: b0 58 5d\n\
2194 357 0: b0 59 14\n\
2195 358 0: b0 59 4b\n\
2196 359 0: b0 59 00\n\
2197 360 0: b0 59 02\n\
2198 361 0: b0 5a 39\n\
2199 362 0: b0 5a 70\n\
2200 363 0: b0 5a 00\n\
2201 364 0: b0 5a 27\n\
2202 365 0: b0 5b 5e\n\
2203 366 0: b0 5b 15\n\
2204 367 0: b0 5b 00\n\
2205 368 0: b0 5b 4c\n\
2206 369 0: b0 5c 03\n\
2207 370 0: b0 5c 3a\n\
2208 371 0: b0 5c 00\n\
2209 372 0: b0 5c 71\n\
2210 373 0: b0 5d 28\n\
2211 374 0: b0 5d 5f\n\
2212 375 0: b0 5d 00\n\
2213 376 0: b0 5d 16\n\
2214 377 0: b0 5e 4d\n\
2215 378 0: b0 5e 04\n\
2216 379 0: b0 5e 00\n\
2217 380 0: b0 5e 3b\n\
2218 381 0: b0 5f 72\n\
2219 382 0: b0 5f 29\n\
2220 383 0: b0 5f 00\n\
2221 384 0: b0 5f 60\n\
2222 393 0: b0 62 61\n\
2223 394 0: b0 62 18\n\
2224 395 0: b0 62 00\n\
2225 396 0: b0 62 4f\n\
2226 397 0: b0 63 06\n\
2227 398 0: b0 63 3d\n\
2228 399 0: b0 63 00\n\
2229 400 0: b0 63 74\n\
2230 401 0: b0 64 2b\n\
2231 402 0: b0 64 62\n\
2232 403 0: b0 64 00\n\
2233 404 0: b0 64 19\n\
2234 405 0: b0 65 50\n\
2235 406 0: b0 65 07\n\
2236 407 0: b0 65 00\n\
2237 408 0: b0 65 3e\n\
2238 409 0: b0 66 75\n\
2239 410 0: b0 66 2c\n\
2240 411 0: b0 66 00\n\
2241 412 0: b0 66 63\n\
2242 413 0: b0 67 1a\n\
2243 414 0: b0 67 51\n\
2244 415 0: b0 67 00\n\
2245 416 0: b0 67 08\n\
2246 417 0: b0 68 3f\n\
2247 418 0: b0 68 76\n\
2248 419 0: b0 68 00\n\
2249 420 0: b0 68 2d\n\
2250 421 0: b0 69 64\n\
2251 422 0: b0 69 1b\n\
2252 423 0: b0 69 00\n\
2253 424 0: b0 69 52\n\
2254 425 0: b0 6a 09\n\
2255 426 0: b0 6a 40\n\
2256 427 0: b0 6a 00\n\
2257 428 0: b0 6a 77\n\
2258 429 0: b0 6b 2e\n\
2259 430 0: b0 6b 65\n\
2260 431 0: b0 6b 00\n\
2261 432 0: b0 6b 1c\n\
2262 433 0: b0 6c 53\n\
2263 434 0: b0 6c 0a\n\
2264 435 0: b0 6c 00\n\
2265 436 0: b0 6c 41\n\
2266 437 0: b0 6d 78\n\
2267 438 0: b0 6d 2f\n\
2268 439 0: b0 6d 00\n\
2269 440 0: b0 6d 66\n\
2270 441 0: b0 6e 1d\n\
2271 442 0: b0 6e 54\n\
2272 443 0: b0 6e 00\n\
2273 444 0: b0 6e 0b\n\
2274 445 0: b0 6f 42\n\
2275 446 0: b0 6f 79\n\
2276 447 0: b0 6f 00\n\
2277 448 0: b0 6f 30\n\
2278 449 0: b0 70 67\n\
2279 450 0: b0 70 1e\n\
2280 451 0: b0 70 00\n\
2281 452 0: b0 70 55\n\
2282 453 0: b0 71 0c\n\
2283 454 0: b0 71 43\n\
2284 455 0: b0 71 00\n\
2285 456 0: b0 71 7a\n\
2286 457 0: b0 72 31\n\
2287 458 0: b0 72 68\n\
2288 459 0: b0 72 00\n\
2289 460 0: b0 72 1f\n\
2290 461 0: b0 73 56\n\
2291 462 0: b0 73 0d\n\
2292 463 0: b0 73 00\n\
2293 464 0: b0 73 44\n\
2294 465 0: b0 74 7b\n\
2295 466 0: b0 74 32\n\
2296 467 0: b0 74 00\n\
2297 468 0: b0 74 69\n\
2298 469 0: b0 75 20\n\
2299 470 0: b0 75 57\n\
2300 471 0: b0 75 00\n\
2301 472 0: b0 75 0e\n\
2302 473 0: b0 76 45\n\
2303 474 0: b0 76 7c\n\
2304 475 0: b0 76 00\n\
2305 476 0: b0 76 33\n\
2306 477 0: b0 77 6a\n\
2307 478 0: b0 77 21\n\
2308 479 0: b0 77 00\n\
2309 480 0: b0 77 58\n\
2310 481 0: b0 40 00\n\
2311 481 0: b0 42 00\n\
2312 481 0: b0 44 00\n\
2313 481 0: b0 45 00\n\
2314 481 0: 80 3c 7f\n\
2315 482 1: b1 40 65\n\
2316 482 1: b1 42 2f\n\
2317 482 1: b1 44 79\n\
2318 482 1: b1 45 1e\n\
2319 482 1: b1 00 25\n\
2320 482 1: b1 20 45\n\
2321 482 1: 91 40 39\n\
2322 482 1: b1 01 4a\n\
2323 482 1: b1 02 6f\n\
2324 482 1: b1 03 14\n\
2325 482 1: b1 04 39\n\
2326 482 1: b1 05 5e\n\
2327 482 1: b1 07 28\n\
2328 482 1: b1 08 4d\n\
2329 482 1: b1 09 72\n\
2330 482 1: b1 0a 17\n\
2331 482 1: b1 0b 3c\n\
2332 482 1: b1 0c 61\n\
2333 482 1: b1 0d 06\n\
2334 482 1: b1 0e 2b\n\
2335 482 1: b1 0f 50\n\
2336 482 1: b1 10 75\n\
2337 482 1: b1 11 1a\n\
2338 482 1: b1 12 3f\n\
2339 482 1: b1 13 64\n\
2340 482 1: b1 14 09\n\
2341 482 1: b1 15 2e\n\
2342 482 1: b1 16 53\n\
2343 482 1: b1 17 78\n\
2344 482 1: b1 18 1d\n\
2345 482 1: b1 19 42\n\
2346 482 1: b1 1a 67\n\
2347 482 1: b1 1b 0c\n\
2348 482 1: b1 1c 31\n\
2349 482 1: b1 1d 56\n\
2350 482 1: b1 1e 7b\n\
2351 482 1: b1 1f 20\n\
2352 482 1: b1 21 6a\n\
2353 482 1: b1 22 0f\n\
2354 482 1: b1 23 34\n\
2355 482 1: b1 24 59\n\
2356 482 1: b1 25 7e\n\
2357 482 1: b1 27 48\n\
2358 482 1: b1 28 6d\n\
2359 482 1: b1 29 12\n\
2360 482 1: b1 2a 37\n\
2361 482 1: b1 2b 5c\n\
2362 482 1: b1 2c 01\n\
2363 482 1: b1 2d 26\n\
2364 482 1: b1 2e 4b\n\
2365 482 1: b1 2f 70\n\
2366 482 1: b1 30 15\n\
2367 482 1: b1 31 3a\n\
2368 482 1: b1 32 5f\n\
2369 482 1: b1 33 04\n\
2370 482 1: b1 34 29\n\
2371 482 1: b1 35 4e\n\
2372 482 1: b1 36 73\n\
2373 482 1: b1 37 18\n\
2374 482 1: b1 38 3d\n\
2375 482 1: b1 39 62\n\
2376 482 1: b1 3a 07\n\
2377 482 1: b1 3b 2c\n\
2378 482 1: b1 3c 51\n\
2379 482 1: b1 3d 76\n\
2380 482 1: b1 3e 1b\n\
2381 482 1: b1 3f 40\n\
2382 482 1: b1 41 0a\n\
2383 482 1: b1 43 54\n\
2384 482 1: b1 46 43\n\
2385 482 1: b1 47 68\n\
2386 482 1: b1 48 0d\n\
2387 482 1: b1 49 32\n\
2388 482 1: b1 4a 57\n\
2389 482 1: b1 4b 7c\n\
2390 482 1: b1 4c 21\n\
2391 482 1: b1 4d 46\n\
2392 482 1: b1 4e 6b\n\
2393 482 1: b1 4f 10\n\
2394 482 1: b1 50 35\n\
2395 482 1: b1 51 5a\n\
2396 482 1: b1 52 7f\n\
2397 482 1: b1 53 24\n\
2398 482 1: b1 54 49\n\
2399 482 1: b1 55 6e\n\
2400 482 1: b1 56 13\n\
2401 482 1: b1 57 38\n\
2402 482 1: b1 58 5d\n\
2403 482 1: b1 59 02\n\
2404 482 1: b1 5a 27\n\
2405 482 1: b1 5b 4c\n\
2406 482 1: b1 5c 71\n\
2407 482 1: b1 5d 16\n\
2408 482 1: b1 5e 3b\n\
2409 482 1: b1 5f 60\n\
2410 482 1: b1 62 4f\n\
2411 482 1: b1 63 74\n\
2412 482 1: b1 64 19\n\
2413 482 1: b1 65 3e\n\
2414 482 1: b1 66 63\n\
2415 482 1: b1 67 08\n\
2416 482 1: b1 68 2d\n\
2417 482 1: b1 69 52\n\
2418 482 1: b1 6a 77\n\
2419 482 1: b1 6b 1c\n\
2420 482 1: b1 6c 41\n\
2421 482 1: b1 6d 66\n\
2422 482 1: b1 6e 0b\n\
2423 482 1: b1 6f 30\n\
2424 482 1: b1 70 55\n\
2425 482 1: b1 71 7a\n\
2426 482 1: b1 72 1f\n\
2427 482 1: b1 73 44\n\
2428 482 1: b1 74 69\n\
2429 482 1: b1 75 0e\n\
2430 482 1: b1 76 33\n\
2431 482 1: b1 77 58\n\
2432 483 1: b1 40 00\n\
2433 483 1: b1 42 00\n\
2434 483 1: b1 44 00\n\
2435 483 1: b1 45 00\n\
2436 483 1: 81 40 39\n\
2437 484 2: b2 40 65\n\
2438 484 2: b2 42 2f\n\
2439 484 2: b2 44 79\n\
2440 484 2: b2 45 1e\n\
2441 484 2: b2 00 25\n\
2442 484 2: b2 20 45\n\
2443 484 2: 92 40 3b\n\
2444 484 2: b2 01 4a\n\
2445 484 2: b2 02 6f\n\
2446 484 2: b2 03 14\n\
2447 484 2: b2 04 39\n\
2448 484 2: b2 05 5e\n\
2449 484 2: b2 07 28\n\
2450 484 2: b2 08 4d\n\
2451 484 2: b2 09 72\n\
2452 484 2: b2 0a 17\n\
2453 484 2: b2 0b 3c\n\
2454 484 2: b2 0c 61\n\
2455 484 2: b2 0d 06\n\
2456 484 2: b2 0e 2b\n\
2457 484 2: b2 0f 50\n\
2458 484 2: b2 10 75\n\
2459 484 2: b2 11 1a\n\
2460 484 2: b2 12 3f\n\
2461 484 2: b2 13 64\n\
2462 484 2: b2 14 09\n\
2463 484 2: b2 15 2e\n\
2464 484 2: b2 16 53\n\
2465 484 2: b2 17 78\n\
2466 484 2: b2 18 1d\n\
2467 484 2: b2 19 42\n\
2468 484 2: b2 1a 67\n\
2469 484 2: b2 1b 0c\n\
2470 484 2: b2 1c 31\n\
2471 484 2: b2 1d 56\n\
2472 484 2: b2 1e 7b\n\
2473 484 2: b2 1f 20\n\
2474 484 2: b2 21 6a\n\
2475 484 2: b2 22 0f\n\
2476 484 2: b2 23 34\n\
2477 484 2: b2 24 59\n\
2478 484 2: b2 25 7e\n\
2479 484 2: b2 27 48\n\
2480 484 2: b2 28 6d\n\
2481 484 2: b2 29 12\n\
2482 484 2: b2 2a 37\n\
2483 484 2: b2 2b 5c\n\
2484 484 2: b2 2c 01\n\
2485 484 2: b2 2d 26\n\
2486 484 2: b2 2e 4b\n\
2487 484 2: b2 2f 70\n\
2488 484 2: b2 30 15\n\
2489 484 2: b2 31 3a\n\
2490 484 2: b2 32 5f\n\
2491 484 2: b2 33 04\n\
2492 484 2: b2 34 29\n\
2493 484 2: b2 35 4e\n\
2494 484 2: b2 36 73\n\
2495 484 2: b2 37 18\n\
2496 484 2: b2 38 3d\n\
2497 484 2: b2 39 62\n\
2498 484 2: b2 3a 07\n\
2499 484 2: b2 3b 2c\n\
2500 484 2: b2 3c 51\n\
2501 484 2: b2 3d 76\n\
2502 484 2: b2 3e 1b\n\
2503 484 2: b2 3f 40\n\
2504 484 2: b2 41 0a\n\
2505 484 2: b2 43 54\n\
2506 484 2: b2 46 43\n\
2507 484 2: b2 47 68\n\
2508 484 2: b2 48 0d\n\
2509 484 2: b2 49 32\n\
2510 484 2: b2 4a 57\n\
2511 484 2: b2 4b 7c\n\
2512 484 2: b2 4c 21\n\
2513 484 2: b2 4d 46\n\
2514 484 2: b2 4e 6b\n\
2515 484 2: b2 4f 10\n\
2516 484 2: b2 50 35\n\
2517 484 2: b2 51 5a\n\
2518 484 2: b2 52 7f\n\
2519 484 2: b2 53 24\n\
2520 484 2: b2 54 49\n\
2521 484 2: b2 55 6e\n\
2522 484 2: b2 56 13\n\
2523 484 2: b2 57 38\n\
2524 484 2: b2 58 5d\n\
2525 484 2: b2 59 02\n\
2526 484 2: b2 5a 27\n\
2527 484 2: b2 5b 4c\n\
2528 484 2: b2 5c 71\n\
2529 484 2: b2 5d 16\n\
2530 484 2: b2 5e 3b\n\
2531 484 2: b2 5f 60\n\
2532 484 2: b2 62 4f\n\
2533 484 2: b2 63 74\n\
2534 484 2: b2 64 19\n\
2535 484 2: b2 65 3e\n\
2536 484 2: b2 66 63\n\
2537 484 2: b2 67 08\n\
2538 484 2: b2 68 2d\n\
2539 484 2: b2 69 52\n\
2540 484 2: b2 6a 77\n\
2541 484 2: b2 6b 1c\n\
2542 484 2: b2 6c 41\n\
2543 484 2: b2 6d 66\n\
2544 484 2: b2 6e 0b\n\
2545 484 2: b2 6f 30\n\
2546 484 2: b2 70 55\n\
2547 484 2: b2 71 7a\n\
2548 484 2: b2 72 1f\n\
2549 484 2: b2 73 44\n\
2550 484 2: b2 74 69\n\
2551 484 2: b2 75 0e\n\
2552 484 2: b2 76 33\n\
2553 484 2: b2 77 58\n\
2554 485 2: b2 40 00\n\
2555 485 2: b2 42 00\n\
2556 485 2: b2 44 00\n\
2557 485 2: b2 45 00\n\
2558 485 2: 82 40 3b\n\
2559 486 3: b3 40 65\n\
2560 486 3: b3 42 2f\n\
2561 486 3: b3 44 79\n\
2562 486 3: b3 45 1e\n\
2563 486 3: b3 00 25\n\
2564 486 3: b3 20 45\n\
2565 486 3: 93 40 3d\n\
2566 486 3: b3 01 4a\n\
2567 486 3: b3 02 6f\n\
2568 486 3: b3 03 14\n\
2569 486 3: b3 04 39\n\
2570 486 3: b3 05 5e\n\
2571 486 3: b3 07 28\n\
2572 486 3: b3 08 4d\n\
2573 486 3: b3 09 72\n\
2574 486 3: b3 0a 17\n\
2575 486 3: b3 0b 3c\n\
2576 486 3: b3 0c 61\n\
2577 486 3: b3 0d 06\n\
2578 486 3: b3 0e 2b\n\
2579 486 3: b3 0f 50\n\
2580 486 3: b3 10 75\n\
2581 486 3: b3 11 1a\n\
2582 486 3: b3 12 3f\n\
2583 486 3: b3 13 64\n\
2584 486 3: b3 14 09\n\
2585 486 3: b3 15 2e\n\
2586 486 3: b3 16 53\n\
2587 486 3: b3 17 78\n\
2588 486 3: b3 18 1d\n\
2589 486 3: b3 19 42\n\
2590 486 3: b3 1a 67\n\
2591 486 3: b3 1b 0c\n\
2592 486 3: b3 1c 31\n\
2593 486 3: b3 1d 56\n\
2594 486 3: b3 1e 7b\n\
2595 486 3: b3 1f 20\n\
2596 486 3: b3 21 6a\n\
2597 486 3: b3 22 0f\n\
2598 486 3: b3 23 34\n\
2599 486 3: b3 24 59\n\
2600 486 3: b3 25 7e\n\
2601 486 3: b3 27 48\n\
2602 486 3: b3 28 6d\n\
2603 486 3: b3 29 12\n\
2604 486 3: b3 2a 37\n\
2605 486 3: b3 2b 5c\n\
2606 486 3: b3 2c 01\n\
2607 486 3: b3 2d 26\n\
2608 486 3: b3 2e 4b\n\
2609 486 3: b3 2f 70\n\
2610 486 3: b3 30 15\n\
2611 486 3: b3 31 3a\n\
2612 486 3: b3 32 5f\n\
2613 486 3: b3 33 04\n\
2614 486 3: b3 34 29\n\
2615 486 3: b3 35 4e\n\
2616 486 3: b3 36 73\n\
2617 486 3: b3 37 18\n\
2618 486 3: b3 38 3d\n\
2619 486 3: b3 39 62\n\
2620 486 3: b3 3a 07\n\
2621 486 3: b3 3b 2c\n\
2622 486 3: b3 3c 51\n\
2623 486 3: b3 3d 76\n\
2624 486 3: b3 3e 1b\n\
2625 486 3: b3 3f 40\n\
2626 486 3: b3 41 0a\n\
2627 486 3: b3 43 54\n\
2628 486 3: b3 46 43\n\
2629 486 3: b3 47 68\n\
2630 486 3: b3 48 0d\n\
2631 486 3: b3 49 32\n\
2632 486 3: b3 4a 57\n\
2633 486 3: b3 4b 7c\n\
2634 486 3: b3 4c 21\n\
2635 486 3: b3 4d 46\n\
2636 486 3: b3 4e 6b\n\
2637 486 3: b3 4f 10\n\
2638 486 3: b3 50 35\n\
2639 486 3: b3 51 5a\n\
2640 486 3: b3 52 7f\n\
2641 486 3: b3 53 24\n\
2642 486 3: b3 54 49\n\
2643 486 3: b3 55 6e\n\
2644 486 3: b3 56 13\n\
2645 486 3: b3 57 38\n\
2646 486 3: b3 58 5d\n\
2647 486 3: b3 59 02\n\
2648 486 3: b3 5a 27\n\
2649 486 3: b3 5b 4c\n\
2650 486 3: b3 5c 71\n\
2651 486 3: b3 5d 16\n\
2652 486 3: b3 5e 3b\n\
2653 486 3: b3 5f 60\n\
2654 486 3: b3 62 4f\n\
2655 486 3: b3 63 74\n\
2656 486 3: b3 64 19\n\
2657 486 3: b3 65 3e\n\
2658 486 3: b3 66 63\n\
2659 486 3: b3 67 08\n\
2660 486 3: b3 68 2d\n\
2661 486 3: b3 69 52\n\
2662 486 3: b3 6a 77\n\
2663 486 3: b3 6b 1c\n\
2664 486 3: b3 6c 41\n\
2665 486 3: b3 6d 66\n\
2666 486 3: b3 6e 0b\n\
2667 486 3: b3 6f 30\n\
2668 486 3: b3 70 55\n\
2669 486 3: b3 71 7a\n\
2670 486 3: b3 72 1f\n\
2671 486 3: b3 73 44\n\
2672 486 3: b3 74 69\n\
2673 486 3: b3 75 0e\n\
2674 486 3: b3 76 33\n\
2675 486 3: b3 77 58\n\
2676 487 3: b3 40 00\n\
2677 487 3: b3 42 00\n\
2678 487 3: b3 44 00\n\
2679 487 3: b3 45 00\n\
2680 487 3: 83 40 3d\n\
2681 488 4: b4 40 65\n\
2682 488 4: b4 42 2f\n\
2683 488 4: b4 44 79\n\
2684 488 4: b4 45 1e\n\
2685 488 4: b4 00 25\n\
2686 488 4: b4 20 45\n\
2687 488 4: 94 40 3f\n\
2688 488 4: b4 01 4a\n\
2689 488 4: b4 02 6f\n\
2690 488 4: b4 03 14\n\
2691 488 4: b4 04 39\n\
2692 488 4: b4 05 5e\n\
2693 488 4: b4 07 28\n\
2694 488 4: b4 08 4d\n\
2695 488 4: b4 09 72\n\
2696 488 4: b4 0a 17\n\
2697 488 4: b4 0b 3c\n\
2698 488 4: b4 0c 61\n\
2699 488 4: b4 0d 06\n\
2700 488 4: b4 0e 2b\n\
2701 488 4: b4 0f 50\n\
2702 488 4: b4 10 75\n\
2703 488 4: b4 11 1a\n\
2704 488 4: b4 12 3f\n\
2705 488 4: b4 13 64\n\
2706 488 4: b4 14 09\n\
2707 488 4: b4 15 2e\n\
2708 488 4: b4 16 53\n\
2709 488 4: b4 17 78\n\
2710 488 4: b4 18 1d\n\
2711 488 4: b4 19 42\n\
2712 488 4: b4 1a 67\n\
2713 488 4: b4 1b 0c\n\
2714 488 4: b4 1c 31\n\
2715 488 4: b4 1d 56\n\
2716 488 4: b4 1e 7b\n\
2717 488 4: b4 1f 20\n\
2718 488 4: b4 21 6a\n\
2719 488 4: b4 22 0f\n\
2720 488 4: b4 23 34\n\
2721 488 4: b4 24 59\n\
2722 488 4: b4 25 7e\n\
2723 488 4: b4 27 48\n\
2724 488 4: b4 28 6d\n\
2725 488 4: b4 29 12\n\
2726 488 4: b4 2a 37\n\
2727 488 4: b4 2b 5c\n\
2728 488 4: b4 2c 01\n\
2729 488 4: b4 2d 26\n\
2730 488 4: b4 2e 4b\n\
2731 488 4: b4 2f 70\n\
2732 488 4: b4 30 15\n\
2733 488 4: b4 31 3a\n\
2734 488 4: b4 32 5f\n\
2735 488 4: b4 33 04\n\
2736 488 4: b4 34 29\n\
2737 488 4: b4 35 4e\n\
2738 488 4: b4 36 73\n\
2739 488 4: b4 37 18\n\
2740 488 4: b4 38 3d\n\
2741 488 4: b4 39 62\n\
2742 488 4: b4 3a 07\n\
2743 488 4: b4 3b 2c\n\
2744 488 4: b4 3c 51\n\
2745 488 4: b4 3d 76\n\
2746 488 4: b4 3e 1b\n\
2747 488 4: b4 3f 40\n\
2748 488 4: b4 41 0a\n\
2749 488 4: b4 43 54\n\
2750 488 4: b4 46 43\n\
2751 488 4: b4 47 68\n\
2752 488 4: b4 48 0d\n\
2753 488 4: b4 49 32\n\
2754 488 4: b4 4a 57\n\
2755 488 4: b4 4b 7c\n\
2756 488 4: b4 4c 21\n\
2757 488 4: b4 4d 46\n\
2758 488 4: b4 4e 6b\n\
2759 488 4: b4 4f 10\n\
2760 488 4: b4 50 35\n\
2761 488 4: b4 51 5a\n\
2762 488 4: b4 52 7f\n\
2763 488 4: b4 53 24\n\
2764 488 4: b4 54 49\n\
2765 488 4: b4 55 6e\n\
2766 488 4: b4 56 13\n\
2767 488 4: b4 57 38\n\
2768 488 4: b4 58 5d\n\
2769 488 4: b4 59 02\n\
2770 488 4: b4 5a 27\n\
2771 488 4: b4 5b 4c\n\
2772 488 4: b4 5c 71\n\
2773 488 4: b4 5d 16\n\
2774 488 4: b4 5e 3b\n\
2775 488 4: b4 5f 60\n\
2776 488 4: b4 62 4f\n\
2777 488 4: b4 63 74\n\
2778 488 4: b4 64 19\n\
2779 488 4: b4 65 3e\n\
2780 488 4: b4 66 63\n\
2781 488 4: b4 67 08\n\
2782 488 4: b4 68 2d\n\
2783 488 4: b4 69 52\n\
2784 488 4: b4 6a 77\n\
2785 488 4: b4 6b 1c\n\
2786 488 4: b4 6c 41\n\
2787 488 4: b4 6d 66\n\
2788 488 4: b4 6e 0b\n\
2789 488 4: b4 6f 30\n\
2790 488 4: b4 70 55\n\
2791 488 4: b4 71 7a\n\
2792 488 4: b4 72 1f\n\
2793 488 4: b4 73 44\n\
2794 488 4: b4 74 69\n\
2795 488 4: b4 75 0e\n\
2796 488 4: b4 76 33\n\
2797 488 4: b4 77 58\n\
2798 489 4: b4 40 00\n\
2799 489 4: b4 42 00\n\
2800 489 4: b4 44 00\n\
2801 489 4: b4 45 00\n\
2802 489 4: 84 40 3f\n\
2803 490 5: b5 40 00\n\
2804 490 5: b5 42 00\n\
2805 490 5: b5 44 00\n\
2806 490 5: b5 45 00\n\
2807 490 5: b5 00 25\n\
2808 490 5: b5 20 45\n\
2809 490 5: 95 40 3f\n\
2810 490 5: b5 07 28\n\
2811 490 5: b5 0a 17\n\
2812 490 5: b5 46 43\n\
2813 490 5: b5 47 68\n\
2814 490 5: b5 48 0d\n\
2815 490 5: b5 49 32\n\
2816 490 5: b5 4a 57\n\
2817 490 5: b5 4b 7c\n\
2818 490 5: b5 4c 21\n\
2819 490 5: b5 4d 46\n\
2820 490 5: b5 4e 6b\n\
2821 490 5: b5 4f 10\n\
2822 490 5: b5 5b 4c\n\
2823 490 5: b5 5c 71\n\
2824 490 5: b5 5d 16\n\
2825 490 5: b5 5e 3b\n\
2826 490 5: b5 5f 60\n\
2827 490 5: b5 01 00\n\
2828 490 5: b5 02 00\n\
2829 490 5: b5 03 00\n\
2830 490 5: b5 04 00\n\
2831 490 5: b5 05 00\n\
2832 490 5: b5 08 40\n\
2833 490 5: b5 09 00\n\
2834 490 5: b5 0b 7f\n\
2835 490 5: b5 0c 00\n\
2836 490 5: b5 0d 00\n\
2837 490 5: b5 0e 00\n\
2838 490 5: b5 0f 00\n\
2839 490 5: b5 10 00\n\
2840 490 5: b5 11 00\n\
2841 490 5: b5 12 00\n\
2842 490 5: b5 13 00\n\
2843 490 5: b5 14 00\n\
2844 490 5: b5 15 00\n\
2845 490 5: b5 16 00\n\
2846 490 5: b5 17 00\n\
2847 490 5: b5 18 00\n\
2848 490 5: b5 19 00\n\
2849 490 5: b5 1a 00\n\
2850 490 5: b5 1b 00\n\
2851 490 5: b5 1c 00\n\
2852 490 5: b5 1d 00\n\
2853 490 5: b5 1e 00\n\
2854 490 5: b5 1f 00\n\
2855 490 5: b5 21 00\n\
2856 490 5: b5 22 00\n\
2857 490 5: b5 23 00\n\
2858 490 5: b5 24 00\n\
2859 490 5: b5 25 00\n\
2860 490 5: b5 27 00\n\
2861 490 5: b5 28 00\n\
2862 490 5: b5 29 00\n\
2863 490 5: b5 2a 00\n\
2864 490 5: b5 2b 7f\n\
2865 490 5: b5 2c 00\n\
2866 490 5: b5 2d 00\n\
2867 490 5: b5 2e 00\n\
2868 490 5: b5 2f 00\n\
2869 490 5: b5 30 00\n\
2870 490 5: b5 31 00\n\
2871 490 5: b5 32 00\n\
2872 490 5: b5 33 00\n\
2873 490 5: b5 34 00\n\
2874 490 5: b5 35 00\n\
2875 490 5: b5 36 00\n\
2876 490 5: b5 37 00\n\
2877 490 5: b5 38 00\n\
2878 490 5: b5 39 00\n\
2879 490 5: b5 3a 00\n\
2880 490 5: b5 3b 00\n\
2881 490 5: b5 3c 00\n\
2882 490 5: b5 3d 00\n\
2883 490 5: b5 3e 00\n\
2884 490 5: b5 3f 00\n\
2885 490 5: b5 41 00\n\
2886 490 5: b5 43 00\n\
2887 490 5: b5 50 00\n\
2888 490 5: b5 51 00\n\
2889 490 5: b5 52 00\n\
2890 490 5: b5 53 00\n\
2891 490 5: b5 54 00\n\
2892 490 5: b5 55 00\n\
2893 490 5: b5 56 00\n\
2894 490 5: b5 57 00\n\
2895 490 5: b5 58 00\n\
2896 490 5: b5 59 00\n\
2897 490 5: b5 5a 00\n\
2898 490 5: b5 62 7f\n\
2899 490 5: b5 63 7f\n\
2900 490 5: b5 64 7f\n\
2901 490 5: b5 65 7f\n\
2902 490 5: b5 66 00\n\
2903 490 5: b5 67 00\n\
2904 490 5: b5 68 00\n\
2905 490 5: b5 69 00\n\
2906 490 5: b5 6a 00\n\
2907 490 5: b5 6b 00\n\
2908 490 5: b5 6c 00\n\
2909 490 5: b5 6d 00\n\
2910 490 5: b5 6e 00\n\
2911 490 5: b5 6f 00\n\
2912 490 5: b5 70 00\n\
2913 490 5: b5 71 00\n\
2914 490 5: b5 72 00\n\
2915 490 5: b5 73 00\n\
2916 490 5: b5 74 00\n\
2917 490 5: b5 75 00\n\
2918 490 5: b5 76 00\n\
2919 490 5: b5 77 00\n\
2920 491 5: 85 40 3f\n\
2921 492 6: b6 40 00\n\
2922 492 6: b6 42 00\n\
2923 492 6: b6 44 00\n\
2924 492 6: b6 45 00\n\
2925 492 6: b6 00 25\n\
2926 492 6: b6 20 45\n\
2927 492 6: 96 40 3f\n\
2928 492 6: b6 07 28\n\
2929 492 6: b6 0a 17\n\
2930 492 6: b6 46 43\n\
2931 492 6: b6 47 68\n\
2932 492 6: b6 48 0d\n\
2933 492 6: b6 49 32\n\
2934 492 6: b6 4a 57\n\
2935 492 6: b6 4b 7c\n\
2936 492 6: b6 4c 21\n\
2937 492 6: b6 4d 46\n\
2938 492 6: b6 4e 6b\n\
2939 492 6: b6 4f 10\n\
2940 492 6: b6 5b 4c\n\
2941 492 6: b6 5c 71\n\
2942 492 6: b6 5d 16\n\
2943 492 6: b6 5e 3b\n\
2944 492 6: b6 5f 60\n\
2945 492 6: b6 01 00\n\
2946 492 6: b6 02 00\n\
2947 492 6: b6 03 00\n\
2948 492 6: b6 04 00\n\
2949 492 6: b6 05 00\n\
2950 492 6: b6 08 40\n\
2951 492 6: b6 09 00\n\
2952 492 6: b6 0b 7f\n\
2953 492 6: b6 0c 00\n\
2954 492 6: b6 0d 00\n\
2955 492 6: b6 0e 00\n\
2956 492 6: b6 0f 00\n\
2957 492 6: b6 10 00\n\
2958 492 6: b6 11 00\n\
2959 492 6: b6 12 00\n\
2960 492 6: b6 13 00\n\
2961 492 6: b6 14 00\n\
2962 492 6: b6 15 00\n\
2963 492 6: b6 16 00\n\
2964 492 6: b6 17 00\n\
2965 492 6: b6 18 00\n\
2966 492 6: b6 19 00\n\
2967 492 6: b6 1a 00\n\
2968 492 6: b6 1b 00\n\
2969 492 6: b6 1c 00\n\
2970 492 6: b6 1d 00\n\
2971 492 6: b6 1e 00\n\
2972 492 6: b6 1f 00\n\
2973 492 6: b6 21 00\n\
2974 492 6: b6 22 00\n\
2975 492 6: b6 23 00\n\
2976 492 6: b6 24 00\n\
2977 492 6: b6 25 00\n\
2978 492 6: b6 27 00\n\
2979 492 6: b6 28 00\n\
2980 492 6: b6 29 00\n\
2981 492 6: b6 2a 00\n\
2982 492 6: b6 2b 7f\n\
2983 492 6: b6 2c 00\n\
2984 492 6: b6 2d 00\n\
2985 492 6: b6 2e 00\n\
2986 492 6: b6 2f 00\n\
2987 492 6: b6 30 00\n\
2988 492 6: b6 31 00\n\
2989 492 6: b6 32 00\n\
2990 492 6: b6 33 00\n\
2991 492 6: b6 34 00\n\
2992 492 6: b6 35 00\n\
2993 492 6: b6 36 00\n\
2994 492 6: b6 37 00\n\
2995 492 6: b6 38 00\n\
2996 492 6: b6 39 00\n\
2997 492 6: b6 3a 00\n\
2998 492 6: b6 3b 00\n\
2999 492 6: b6 3c 00\n\
3000 492 6: b6 3d 00\n\
3001 492 6: b6 3e 00\n\
3002 492 6: b6 3f 00\n\
3003 492 6: b6 41 00\n\
3004 492 6: b6 43 00\n\
3005 492 6: b6 50 00\n\
3006 492 6: b6 51 00\n\
3007 492 6: b6 52 00\n\
3008 492 6: b6 53 00\n\
3009 492 6: b6 54 00\n\
3010 492 6: b6 55 00\n\
3011 492 6: b6 56 00\n\
3012 492 6: b6 57 00\n\
3013 492 6: b6 58 00\n\
3014 492 6: b6 59 00\n\
3015 492 6: b6 5a 00\n\
3016 492 6: b6 62 7f\n\
3017 492 6: b6 63 7f\n\
3018 492 6: b6 64 7f\n\
3019 492 6: b6 65 7f\n\
3020 492 6: b6 66 00\n\
3021 492 6: b6 67 00\n\
3022 492 6: b6 68 00\n\
3023 492 6: b6 69 00\n\
3024 492 6: b6 6a 00\n\
3025 492 6: b6 6b 00\n\
3026 492 6: b6 6c 00\n\
3027 492 6: b6 6d 00\n\
3028 492 6: b6 6e 00\n\
3029 492 6: b6 6f 00\n\
3030 492 6: b6 70 00\n\
3031 492 6: b6 71 00\n\
3032 492 6: b6 72 00\n\
3033 492 6: b6 73 00\n\
3034 492 6: b6 74 00\n\
3035 492 6: b6 75 00\n\
3036 492 6: b6 76 00\n\
3037 492 6: b6 77 00\n\
3038 493 6: 86 40 3f\n\
3039 494 7: b7 40 00\n\
3040 494 7: b7 42 00\n\
3041 494 7: b7 44 00\n\
3042 494 7: b7 45 00\n\
3043 494 7: b7 00 25\n\
3044 494 7: b7 20 45\n\
3045 494 7: 97 40 3f\n\
3046 494 7: b7 07 28\n\
3047 494 7: b7 0a 17\n\
3048 494 7: b7 46 43\n\
3049 494 7: b7 47 68\n\
3050 494 7: b7 48 0d\n\
3051 494 7: b7 49 32\n\
3052 494 7: b7 4a 57\n\
3053 494 7: b7 4b 7c\n\
3054 494 7: b7 4c 21\n\
3055 494 7: b7 4d 46\n\
3056 494 7: b7 4e 6b\n\
3057 494 7: b7 4f 10\n\
3058 494 7: b7 5b 4c\n\
3059 494 7: b7 5c 71\n\
3060 494 7: b7 5d 16\n\
3061 494 7: b7 5e 3b\n\
3062 494 7: b7 5f 60\n\
3063 494 7: b7 01 00\n\
3064 494 7: b7 02 00\n\
3065 494 7: b7 03 00\n\
3066 494 7: b7 04 00\n\
3067 494 7: b7 05 00\n\
3068 494 7: b7 08 40\n\
3069 494 7: b7 09 00\n\
3070 494 7: b7 0b 7f\n\
3071 494 7: b7 0c 00\n\
3072 494 7: b7 0d 00\n\
3073 494 7: b7 0e 00\n\
3074 494 7: b7 0f 00\n\
3075 494 7: b7 10 00\n\
3076 494 7: b7 11 00\n\
3077 494 7: b7 12 00\n\
3078 494 7: b7 13 00\n\
3079 494 7: b7 14 00\n\
3080 494 7: b7 15 00\n\
3081 494 7: b7 16 00\n\
3082 494 7: b7 17 00\n\
3083 494 7: b7 18 00\n\
3084 494 7: b7 19 00\n\
3085 494 7: b7 1a 00\n\
3086 494 7: b7 1b 00\n\
3087 494 7: b7 1c 00\n\
3088 494 7: b7 1d 00\n\
3089 494 7: b7 1e 00\n\
3090 494 7: b7 1f 00\n\
3091 494 7: b7 21 00\n\
3092 494 7: b7 22 00\n\
3093 494 7: b7 23 00\n\
3094 494 7: b7 24 00\n\
3095 494 7: b7 25 00\n\
3096 494 7: b7 27 00\n\
3097 494 7: b7 28 00\n\
3098 494 7: b7 29 00\n\
3099 494 7: b7 2a 00\n\
3100 494 7: b7 2b 7f\n\
3101 494 7: b7 2c 00\n\
3102 494 7: b7 2d 00\n\
3103 494 7: b7 2e 00\n\
3104 494 7: b7 2f 00\n\
3105 494 7: b7 30 00\n\
3106 494 7: b7 31 00\n\
3107 494 7: b7 32 00\n\
3108 494 7: b7 33 00\n\
3109 494 7: b7 34 00\n\
3110 494 7: b7 35 00\n\
3111 494 7: b7 36 00\n\
3112 494 7: b7 37 00\n\
3113 494 7: b7 38 00\n\
3114 494 7: b7 39 00\n\
3115 494 7: b7 3a 00\n\
3116 494 7: b7 3b 00\n\
3117 494 7: b7 3c 00\n\
3118 494 7: b7 3d 00\n\
3119 494 7: b7 3e 00\n\
3120 494 7: b7 3f 00\n\
3121 494 7: b7 41 00\n\
3122 494 7: b7 43 00\n\
3123 494 7: b7 50 00\n\
3124 494 7: b7 51 00\n\
3125 494 7: b7 52 00\n\
3126 494 7: b7 53 00\n\
3127 494 7: b7 54 00\n\
3128 494 7: b7 55 00\n\
3129 494 7: b7 56 00\n\
3130 494 7: b7 57 00\n\
3131 494 7: b7 58 00\n\
3132 494 7: b7 59 00\n\
3133 494 7: b7 5a 00\n\
3134 494 7: b7 62 7f\n\
3135 494 7: b7 63 7f\n\
3136 494 7: b7 64 7f\n\
3137 494 7: b7 65 7f\n\
3138 494 7: b7 66 00\n\
3139 494 7: b7 67 00\n\
3140 494 7: b7 68 00\n\
3141 494 7: b7 69 00\n\
3142 494 7: b7 6a 00\n\
3143 494 7: b7 6b 00\n\
3144 494 7: b7 6c 00\n\
3145 494 7: b7 6d 00\n\
3146 494 7: b7 6e 00\n\
3147 494 7: b7 6f 00\n\
3148 494 7: b7 70 00\n\
3149 494 7: b7 71 00\n\
3150 494 7: b7 72 00\n\
3151 494 7: b7 73 00\n\
3152 494 7: b7 74 00\n\
3153 494 7: b7 75 00\n\
3154 494 7: b7 76 00\n\
3155 494 7: b7 77 00\n\
3156 495 7: 87 40 3f\n\
3157 496 8: b8 40 00\n\
3158 496 8: b8 42 00\n\
3159 496 8: b8 44 00\n\
3160 496 8: b8 45 00\n\
3161 496 8: b8 00 25\n\
3162 496 8: b8 20 45\n\
3163 496 8: 98 40 3f\n\
3164 496 8: b8 07 28\n\
3165 496 8: b8 0a 17\n\
3166 496 8: b8 46 43\n\
3167 496 8: b8 47 68\n\
3168 496 8: b8 48 0d\n\
3169 496 8: b8 49 32\n\
3170 496 8: b8 4a 57\n\
3171 496 8: b8 4b 7c\n\
3172 496 8: b8 4c 21\n\
3173 496 8: b8 4d 46\n\
3174 496 8: b8 4e 6b\n\
3175 496 8: b8 4f 10\n\
3176 496 8: b8 5b 4c\n\
3177 496 8: b8 5c 71\n\
3178 496 8: b8 5d 16\n\
3179 496 8: b8 5e 3b\n\
3180 496 8: b8 5f 60\n\
3181 496 8: b8 01 00\n\
3182 496 8: b8 02 00\n\
3183 496 8: b8 03 00\n\
3184 496 8: b8 04 00\n\
3185 496 8: b8 05 00\n\
3186 496 8: b8 08 40\n\
3187 496 8: b8 09 00\n\
3188 496 8: b8 0b 7f\n\
3189 496 8: b8 0c 00\n\
3190 496 8: b8 0d 00\n\
3191 496 8: b8 0e 00\n\
3192 496 8: b8 0f 00\n\
3193 496 8: b8 10 00\n\
3194 496 8: b8 11 00\n\
3195 496 8: b8 12 00\n\
3196 496 8: b8 13 00\n\
3197 496 8: b8 14 00\n\
3198 496 8: b8 15 00\n\
3199 496 8: b8 16 00\n\
3200 496 8: b8 17 00\n\
3201 496 8: b8 18 00\n\
3202 496 8: b8 19 00\n\
3203 496 8: b8 1a 00\n\
3204 496 8: b8 1b 00\n\
3205 496 8: b8 1c 00\n\
3206 496 8: b8 1d 00\n\
3207 496 8: b8 1e 00\n\
3208 496 8: b8 1f 00\n\
3209 496 8: b8 21 00\n\
3210 496 8: b8 22 00\n\
3211 496 8: b8 23 00\n\
3212 496 8: b8 24 00\n\
3213 496 8: b8 25 00\n\
3214 496 8: b8 27 00\n\
3215 496 8: b8 28 00\n\
3216 496 8: b8 29 00\n\
3217 496 8: b8 2a 00\n\
3218 496 8: b8 2b 7f\n\
3219 496 8: b8 2c 00\n\
3220 496 8: b8 2d 00\n\
3221 496 8: b8 2e 00\n\
3222 496 8: b8 2f 00\n\
3223 496 8: b8 30 00\n\
3224 496 8: b8 31 00\n\
3225 496 8: b8 32 00\n\
3226 496 8: b8 33 00\n\
3227 496 8: b8 34 00\n\
3228 496 8: b8 35 00\n\
3229 496 8: b8 36 00\n\
3230 496 8: b8 37 00\n\
3231 496 8: b8 38 00\n\
3232 496 8: b8 39 00\n\
3233 496 8: b8 3a 00\n\
3234 496 8: b8 3b 00\n\
3235 496 8: b8 3c 00\n\
3236 496 8: b8 3d 00\n\
3237 496 8: b8 3e 00\n\
3238 496 8: b8 3f 00\n\
3239 496 8: b8 41 00\n\
3240 496 8: b8 43 00\n\
3241 496 8: b8 50 00\n\
3242 496 8: b8 51 00\n\
3243 496 8: b8 52 00\n\
3244 496 8: b8 53 00\n\
3245 496 8: b8 54 00\n\
3246 496 8: b8 55 00\n\
3247 496 8: b8 56 00\n\
3248 496 8: b8 57 00\n\
3249 496 8: b8 58 00\n\
3250 496 8: b8 59 00\n\
3251 496 8: b8 5a 00\n\
3252 496 8: b8 62 7f\n\
3253 496 8: b8 63 7f\n\
3254 496 8: b8 64 7f\n\
3255 496 8: b8 65 7f\n\
3256 496 8: b8 66 00\n\
3257 496 8: b8 67 00\n\
3258 496 8: b8 68 00\n\
3259 496 8: b8 69 00\n\
3260 496 8: b8 6a 00\n\
3261 496 8: b8 6b 00\n\
3262 496 8: b8 6c 00\n\
3263 496 8: b8 6d 00\n\
3264 496 8: b8 6e 00\n\
3265 496 8: b8 6f 00\n\
3266 496 8: b8 70 00\n\
3267 496 8: b8 71 00\n\
3268 496 8: b8 72 00\n\
3269 496 8: b8 73 00\n\
3270 496 8: b8 74 00\n\
3271 496 8: b8 75 00\n\
3272 496 8: b8 76 00\n\
3273 496 8: b8 77 00\n\
3274 497 8: 88 40 3f\n\
3275 498 10: ba 40 00\n\
3276 498 10: ba 42 00\n\
3277 498 10: ba 44 00\n\
3278 498 10: ba 45 00\n\
3279 498 10: ba 00 25\n\
3280 498 10: ba 20 45\n\
3281 498 10: 9a 40 3f\n\
3282 498 10: ba 07 28\n\
3283 498 10: ba 0a 17\n\
3284 498 10: ba 46 43\n\
3285 498 10: ba 47 68\n\
3286 498 10: ba 48 0d\n\
3287 498 10: ba 49 32\n\
3288 498 10: ba 4a 57\n\
3289 498 10: ba 4b 7c\n\
3290 498 10: ba 4c 21\n\
3291 498 10: ba 4d 46\n\
3292 498 10: ba 4e 6b\n\
3293 498 10: ba 4f 10\n\
3294 498 10: ba 5b 4c\n\
3295 498 10: ba 5c 71\n\
3296 498 10: ba 5d 16\n\
3297 498 10: ba 5e 3b\n\
3298 498 10: ba 5f 60\n\
3299 498 10: ba 01 00\n\
3300 498 10: ba 02 00\n\
3301 498 10: ba 03 00\n\
3302 498 10: ba 04 00\n\
3303 498 10: ba 05 00\n\
3304 498 10: ba 08 40\n\
3305 498 10: ba 09 00\n\
3306 498 10: ba 0b 7f\n\
3307 498 10: ba 0c 00\n\
3308 498 10: ba 0d 00\n\
3309 498 10: ba 0e 00\n\
3310 498 10: ba 0f 00\n\
3311 498 10: ba 10 00\n\
3312 498 10: ba 11 00\n\
3313 498 10: ba 12 00\n\
3314 498 10: ba 13 00\n\
3315 498 10: ba 14 00\n\
3316 498 10: ba 15 00\n\
3317 498 10: ba 16 00\n\
3318 498 10: ba 17 00\n\
3319 498 10: ba 18 00\n\
3320 498 10: ba 19 00\n\
3321 498 10: ba 1a 00\n\
3322 498 10: ba 1b 00\n\
3323 498 10: ba 1c 00\n\
3324 498 10: ba 1d 00\n\
3325 498 10: ba 1e 00\n\
3326 498 10: ba 1f 00\n\
3327 498 10: ba 21 00\n\
3328 498 10: ba 22 00\n\
3329 498 10: ba 23 00\n\
3330 498 10: ba 24 00\n\
3331 498 10: ba 25 00\n\
3332 498 10: ba 27 00\n\
3333 498 10: ba 28 00\n\
3334 498 10: ba 29 00\n\
3335 498 10: ba 2a 00\n\
3336 498 10: ba 2b 7f\n\
3337 498 10: ba 2c 00\n\
3338 498 10: ba 2d 00\n\
3339 498 10: ba 2e 00\n\
3340 498 10: ba 2f 00\n\
3341 498 10: ba 30 00\n\
3342 498 10: ba 31 00\n\
3343 498 10: ba 32 00\n\
3344 498 10: ba 33 00\n\
3345 498 10: ba 34 00\n\
3346 498 10: ba 35 00\n\
3347 498 10: ba 36 00\n\
3348 498 10: ba 37 00\n\
3349 498 10: ba 38 00\n\
3350 498 10: ba 39 00\n\
3351 498 10: ba 3a 00\n\
3352 498 10: ba 3b 00\n\
3353 498 10: ba 3c 00\n\
3354 498 10: ba 3d 00\n\
3355 498 10: ba 3e 00\n\
3356 498 10: ba 3f 00\n\
3357 498 10: ba 41 00\n\
3358 498 10: ba 43 00\n\
3359 498 10: ba 50 00\n\
3360 498 10: ba 51 00\n\
3361 498 10: ba 52 00\n\
3362 498 10: ba 53 00\n\
3363 498 10: ba 54 00\n\
3364 498 10: ba 55 00\n\
3365 498 10: ba 56 00\n\
3366 498 10: ba 57 00\n\
3367 498 10: ba 58 00\n\
3368 498 10: ba 59 00\n\
3369 498 10: ba 5a 00\n\
3370 498 10: ba 62 7f\n\
3371 498 10: ba 63 7f\n\
3372 498 10: ba 64 7f\n\
3373 498 10: ba 65 7f\n\
3374 498 10: ba 66 00\n\
3375 498 10: ba 67 00\n\
3376 498 10: ba 68 00\n\
3377 498 10: ba 69 00\n\
3378 498 10: ba 6a 00\n\
3379 498 10: ba 6b 00\n\
3380 498 10: ba 6c 00\n\
3381 498 10: ba 6d 00\n\
3382 498 10: ba 6e 00\n\
3383 498 10: ba 6f 00\n\
3384 498 10: ba 70 00\n\
3385 498 10: ba 71 00\n\
3386 498 10: ba 72 00\n\
3387 498 10: ba 73 00\n\
3388 498 10: ba 74 00\n\
3389 498 10: ba 75 00\n\
3390 498 10: ba 76 00\n\
3391 498 10: ba 77 00\n\
3392 499 10: 8a 40 3f\n\
3393 500 11: bb 40 00\n\
3394 500 11: bb 42 00\n\
3395 500 11: bb 44 00\n\
3396 500 11: bb 45 00\n\
3397 500 11: bb 00 25\n\
3398 500 11: bb 20 45\n\
3399 500 11: 9b 40 3f\n\
3400 500 11: bb 07 28\n\
3401 500 11: bb 0a 17\n\
3402 500 11: bb 46 43\n\
3403 500 11: bb 47 68\n\
3404 500 11: bb 48 0d\n\
3405 500 11: bb 49 32\n\
3406 500 11: bb 4a 57\n\
3407 500 11: bb 4b 7c\n\
3408 500 11: bb 4c 21\n\
3409 500 11: bb 4d 46\n\
3410 500 11: bb 4e 6b\n\
3411 500 11: bb 4f 10\n\
3412 500 11: bb 5b 4c\n\
3413 500 11: bb 5c 71\n\
3414 500 11: bb 5d 16\n\
3415 500 11: bb 5e 3b\n\
3416 500 11: bb 5f 60\n\
3417 500 11: bb 01 00\n\
3418 500 11: bb 02 00\n\
3419 500 11: bb 03 00\n\
3420 500 11: bb 04 00\n\
3421 500 11: bb 05 00\n\
3422 500 11: bb 08 40\n\
3423 500 11: bb 09 00\n\
3424 500 11: bb 0b 7f\n\
3425 500 11: bb 0c 00\n\
3426 500 11: bb 0d 00\n\
3427 500 11: bb 0e 00\n\
3428 500 11: bb 0f 00\n\
3429 500 11: bb 10 00\n\
3430 500 11: bb 11 00\n\
3431 500 11: bb 12 00\n\
3432 500 11: bb 13 00\n\
3433 500 11: bb 14 00\n\
3434 500 11: bb 15 00\n\
3435 500 11: bb 16 00\n\
3436 500 11: bb 17 00\n\
3437 500 11: bb 18 00\n\
3438 500 11: bb 19 00\n\
3439 500 11: bb 1a 00\n\
3440 500 11: bb 1b 00\n\
3441 500 11: bb 1c 00\n\
3442 500 11: bb 1d 00\n\
3443 500 11: bb 1e 00\n\
3444 500 11: bb 1f 00\n\
3445 500 11: bb 21 00\n\
3446 500 11: bb 22 00\n\
3447 500 11: bb 23 00\n\
3448 500 11: bb 24 00\n\
3449 500 11: bb 25 00\n\
3450 500 11: bb 27 00\n\
3451 500 11: bb 28 00\n\
3452 500 11: bb 29 00\n\
3453 500 11: bb 2a 00\n\
3454 500 11: bb 2b 7f\n\
3455 500 11: bb 2c 00\n\
3456 500 11: bb 2d 00\n\
3457 500 11: bb 2e 00\n\
3458 500 11: bb 2f 00\n\
3459 500 11: bb 30 00\n\
3460 500 11: bb 31 00\n\
3461 500 11: bb 32 00\n\
3462 500 11: bb 33 00\n\
3463 500 11: bb 34 00\n\
3464 500 11: bb 35 00\n\
3465 500 11: bb 36 00\n\
3466 500 11: bb 37 00\n\
3467 500 11: bb 38 00\n\
3468 500 11: bb 39 00\n\
3469 500 11: bb 3a 00\n\
3470 500 11: bb 3b 00\n\
3471 500 11: bb 3c 00\n\
3472 500 11: bb 3d 00\n\
3473 500 11: bb 3e 00\n\
3474 500 11: bb 3f 00\n\
3475 500 11: bb 41 00\n\
3476 500 11: bb 43 00\n\
3477 500 11: bb 50 00\n\
3478 500 11: bb 51 00\n\
3479 500 11: bb 52 00\n\
3480 500 11: bb 53 00\n\
3481 500 11: bb 54 00\n\
3482 500 11: bb 55 00\n\
3483 500 11: bb 56 00\n\
3484 500 11: bb 57 00\n\
3485 500 11: bb 58 00\n\
3486 500 11: bb 59 00\n\
3487 500 11: bb 5a 00\n\
3488 500 11: bb 62 7f\n\
3489 500 11: bb 63 7f\n\
3490 500 11: bb 64 7f\n\
3491 500 11: bb 65 7f\n\
3492 500 11: bb 66 00\n\
3493 500 11: bb 67 00\n\
3494 500 11: bb 68 00\n\
3495 500 11: bb 69 00\n\
3496 500 11: bb 6a 00\n\
3497 500 11: bb 6b 00\n\
3498 500 11: bb 6c 00\n\
3499 500 11: bb 6d 00\n\
3500 500 11: bb 6e 00\n\
3501 500 11: bb 6f 00\n\
3502 500 11: bb 70 00\n\
3503 500 11: bb 71 00\n\
3504 500 11: bb 72 00\n\
3505 500 11: bb 73 00\n\
3506 500 11: bb 74 00\n\
3507 500 11: bb 75 00\n\
3508 500 11: bb 76 00\n\
3509 500 11: bb 77 00\n\
3510 501 11: 8b 40 3f\n\
3511 502 12: bc 40 00\n\
3512 502 12: bc 42 00\n\
3513 502 12: bc 44 00\n\
3514 502 12: bc 45 00\n\
3515 502 12: bc 00 25\n\
3516 502 12: bc 20 45\n\
3517 502 12: 9c 40 3f\n\
3518 502 12: bc 07 28\n\
3519 502 12: bc 0a 17\n\
3520 502 12: bc 46 43\n\
3521 502 12: bc 47 68\n\
3522 502 12: bc 48 0d\n\
3523 502 12: bc 49 32\n\
3524 502 12: bc 4a 57\n\
3525 502 12: bc 4b 7c\n\
3526 502 12: bc 4c 21\n\
3527 502 12: bc 4d 46\n\
3528 502 12: bc 4e 6b\n\
3529 502 12: bc 4f 10\n\
3530 502 12: bc 5b 4c\n\
3531 502 12: bc 5c 71\n\
3532 502 12: bc 5d 16\n\
3533 502 12: bc 5e 3b\n\
3534 502 12: bc 5f 60\n\
3535 502 12: bc 01 00\n\
3536 502 12: bc 02 00\n\
3537 502 12: bc 03 00\n\
3538 502 12: bc 04 00\n\
3539 502 12: bc 05 00\n\
3540 502 12: bc 08 40\n\
3541 502 12: bc 09 00\n\
3542 502 12: bc 0b 7f\n\
3543 502 12: bc 0c 00\n\
3544 502 12: bc 0d 00\n\
3545 502 12: bc 0e 00\n\
3546 502 12: bc 0f 00\n\
3547 502 12: bc 10 00\n\
3548 502 12: bc 11 00\n\
3549 502 12: bc 12 00\n\
3550 502 12: bc 13 00\n\
3551 502 12: bc 14 00\n\
3552 502 12: bc 15 00\n\
3553 502 12: bc 16 00\n\
3554 502 12: bc 17 00\n\
3555 502 12: bc 18 00\n\
3556 502 12: bc 19 00\n\
3557 502 12: bc 1a 00\n\
3558 502 12: bc 1b 00\n\
3559 502 12: bc 1c 00\n\
3560 502 12: bc 1d 00\n\
3561 502 12: bc 1e 00\n\
3562 502 12: bc 1f 00\n\
3563 502 12: bc 21 00\n\
3564 502 12: bc 22 00\n\
3565 502 12: bc 23 00\n\
3566 502 12: bc 24 00\n\
3567 502 12: bc 25 00\n\
3568 502 12: bc 27 00\n\
3569 502 12: bc 28 00\n\
3570 502 12: bc 29 00\n\
3571 502 12: bc 2a 00\n\
3572 502 12: bc 2b 7f\n\
3573 502 12: bc 2c 00\n\
3574 502 12: bc 2d 00\n\
3575 502 12: bc 2e 00\n\
3576 502 12: bc 2f 00\n\
3577 502 12: bc 30 00\n\
3578 502 12: bc 31 00\n\
3579 502 12: bc 32 00\n\
3580 502 12: bc 33 00\n\
3581 502 12: bc 34 00\n\
3582 502 12: bc 35 00\n\
3583 502 12: bc 36 00\n\
3584 502 12: bc 37 00\n\
3585 502 12: bc 38 00\n\
3586 502 12: bc 39 00\n\
3587 502 12: bc 3a 00\n\
3588 502 12: bc 3b 00\n\
3589 502 12: bc 3c 00\n\
3590 502 12: bc 3d 00\n\
3591 502 12: bc 3e 00\n\
3592 502 12: bc 3f 00\n\
3593 502 12: bc 41 00\n\
3594 502 12: bc 43 00\n\
3595 502 12: bc 50 00\n\
3596 502 12: bc 51 00\n\
3597 502 12: bc 52 00\n\
3598 502 12: bc 53 00\n\
3599 502 12: bc 54 00\n\
3600 502 12: bc 55 00\n\
3601 502 12: bc 56 00\n\
3602 502 12: bc 57 00\n\
3603 502 12: bc 58 00\n\
3604 502 12: bc 59 00\n\
3605 502 12: bc 5a 00\n\
3606 502 12: bc 62 7f\n\
3607 502 12: bc 63 7f\n\
3608 502 12: bc 64 7f\n\
3609 502 12: bc 65 7f\n\
3610 502 12: bc 66 00\n\
3611 502 12: bc 67 00\n\
3612 502 12: bc 68 00\n\
3613 502 12: bc 69 00\n\
3614 502 12: bc 6a 00\n\
3615 502 12: bc 6b 00\n\
3616 502 12: bc 6c 00\n\
3617 502 12: bc 6d 00\n\
3618 502 12: bc 6e 00\n\
3619 502 12: bc 6f 00\n\
3620 502 12: bc 70 00\n\
3621 502 12: bc 71 00\n\
3622 502 12: bc 72 00\n\
3623 502 12: bc 73 00\n\
3624 502 12: bc 74 00\n\
3625 502 12: bc 75 00\n\
3626 502 12: bc 76 00\n\
3627 502 12: bc 77 00\n\
3628 503 12: 8c 40 3f\n\
3629 504 13: bd 40 00\n\
3630 504 13: bd 42 00\n\
3631 504 13: bd 44 00\n\
3632 504 13: bd 45 00\n\
3633 504 13: bd 00 25\n\
3634 504 13: bd 20 45\n\
3635 504 13: 9d 40 41\n\
3636 504 13: bd 07 28\n\
3637 504 13: bd 0a 17\n\
3638 504 13: bd 46 43\n\
3639 504 13: bd 47 68\n\
3640 504 13: bd 48 0d\n\
3641 504 13: bd 49 32\n\
3642 504 13: bd 4a 57\n\
3643 504 13: bd 4b 7c\n\
3644 504 13: bd 4c 21\n\
3645 504 13: bd 4d 46\n\
3646 504 13: bd 4e 6b\n\
3647 504 13: bd 4f 10\n\
3648 504 13: bd 5b 4c\n\
3649 504 13: bd 5c 71\n\
3650 504 13: bd 5d 16\n\
3651 504 13: bd 5e 3b\n\
3652 504 13: bd 5f 60\n\
3653 504 13: bd 01 00\n\
3654 504 13: bd 02 00\n\
3655 504 13: bd 03 00\n\
3656 504 13: bd 04 00\n\
3657 504 13: bd 05 00\n\
3658 504 13: bd 08 40\n\
3659 504 13: bd 09 00\n\
3660 504 13: bd 0b 7f\n\
3661 504 13: bd 0c 00\n\
3662 504 13: bd 0d 00\n\
3663 504 13: bd 0e 00\n\
3664 504 13: bd 0f 00\n\
3665 504 13: bd 10 00\n\
3666 504 13: bd 11 00\n\
3667 504 13: bd 12 00\n\
3668 504 13: bd 13 00\n\
3669 504 13: bd 14 00\n\
3670 504 13: bd 15 00\n\
3671 504 13: bd 16 00\n\
3672 504 13: bd 17 00\n\
3673 504 13: bd 18 00\n\
3674 504 13: bd 19 00\n\
3675 504 13: bd 1a 00\n\
3676 504 13: bd 1b 00\n\
3677 504 13: bd 1c 00\n\
3678 504 13: bd 1d 00\n\
3679 504 13: bd 1e 00\n\
3680 504 13: bd 1f 00\n\
3681 504 13: bd 21 00\n\
3682 504 13: bd 22 00\n\
3683 504 13: bd 23 00\n\
3684 504 13: bd 24 00\n\
3685 504 13: bd 25 00\n\
3686 504 13: bd 27 00\n\
3687 504 13: bd 28 00\n\
3688 504 13: bd 29 00\n\
3689 504 13: bd 2a 00\n\
3690 504 13: bd 2b 7f\n\
3691 504 13: bd 2c 00\n\
3692 504 13: bd 2d 00\n\
3693 504 13: bd 2e 00\n\
3694 504 13: bd 2f 00\n\
3695 504 13: bd 30 00\n\
3696 504 13: bd 31 00\n\
3697 504 13: bd 32 00\n\
3698 504 13: bd 33 00\n\
3699 504 13: bd 34 00\n\
3700 504 13: bd 35 00\n\
3701 504 13: bd 36 00\n\
3702 504 13: bd 37 00\n\
3703 504 13: bd 38 00\n\
3704 504 13: bd 39 00\n\
3705 504 13: bd 3a 00\n\
3706 504 13: bd 3b 00\n\
3707 504 13: bd 3c 00\n\
3708 504 13: bd 3d 00\n\
3709 504 13: bd 3e 00\n\
3710 504 13: bd 3f 00\n\
3711 504 13: bd 41 00\n\
3712 504 13: bd 43 00\n\
3713 504 13: bd 50 00\n\
3714 504 13: bd 51 00\n\
3715 504 13: bd 52 00\n\
3716 504 13: bd 53 00\n\
3717 504 13: bd 54 00\n\
3718 504 13: bd 55 00\n\
3719 504 13: bd 56 00\n\
3720 504 13: bd 57 00\n\
3721 504 13: bd 58 00\n\
3722 504 13: bd 59 00\n\
3723 504 13: bd 5a 00\n\
3724 504 13: bd 62 7f\n\
3725 504 13: bd 63 7f\n\
3726 504 13: bd 64 7f\n\
3727 504 13: bd 65 7f\n\
3728 504 13: bd 66 00\n\
3729 504 13: bd 67 00\n\
3730 504 13: bd 68 00\n\
3731 504 13: bd 69 00\n\
3732 504 13: bd 6a 00\n\
3733 504 13: bd 6b 00\n\
3734 504 13: bd 6c 00\n\
3735 504 13: bd 6d 00\n\
3736 504 13: bd 6e 00\n\
3737 504 13: bd 6f 00\n\
3738 504 13: bd 70 00\n\
3739 504 13: bd 71 00\n\
3740 504 13: bd 72 00\n\
3741 504 13: bd 73 00\n\
3742 504 13: bd 74 00\n\
3743 504 13: bd 75 00\n\
3744 504 13: bd 76 00\n\
3745 504 13: bd 77 00\n\
3746 505 13: 8d 40 41\n\
3747 506 14: be 40 00\n\
3748 506 14: be 42 00\n\
3749 506 14: be 44 00\n\
3750 506 14: be 45 00\n\
3751 506 14: be 00 25\n\
3752 506 14: be 20 45\n\
3753 506 14: 9e 40 43\n\
3754 506 14: be 07 28\n\
3755 506 14: be 0a 17\n\
3756 506 14: be 46 43\n\
3757 506 14: be 47 68\n\
3758 506 14: be 48 0d\n\
3759 506 14: be 49 32\n\
3760 506 14: be 4a 57\n\
3761 506 14: be 4b 7c\n\
3762 506 14: be 4c 21\n\
3763 506 14: be 4d 46\n\
3764 506 14: be 4e 6b\n\
3765 506 14: be 4f 10\n\
3766 506 14: be 5b 4c\n\
3767 506 14: be 5c 71\n\
3768 506 14: be 5d 16\n\
3769 506 14: be 5e 3b\n\
3770 506 14: be 5f 60\n\
3771 506 14: be 01 00\n\
3772 506 14: be 02 00\n\
3773 506 14: be 03 00\n\
3774 506 14: be 04 00\n\
3775 506 14: be 05 00\n\
3776 506 14: be 08 40\n\
3777 506 14: be 09 00\n\
3778 506 14: be 0b 7f\n\
3779 506 14: be 0c 00\n\
3780 506 14: be 0d 00\n\
3781 506 14: be 0e 00\n\
3782 506 14: be 0f 00\n\
3783 506 14: be 10 00\n\
3784 506 14: be 11 00\n\
3785 506 14: be 12 00\n\
3786 506 14: be 13 00\n\
3787 506 14: be 14 00\n\
3788 506 14: be 15 00\n\
3789 506 14: be 16 00\n\
3790 506 14: be 17 00\n\
3791 506 14: be 18 00\n\
3792 506 14: be 19 00\n\
3793 506 14: be 1a 00\n\
3794 506 14: be 1b 00\n\
3795 506 14: be 1c 00\n\
3796 506 14: be 1d 00\n\
3797 506 14: be 1e 00\n\
3798 506 14: be 1f 00\n\
3799 506 14: be 21 00\n\
3800 506 14: be 22 00\n\
3801 506 14: be 23 00\n\
3802 506 14: be 24 00\n\
3803 506 14: be 25 00\n\
3804 506 14: be 27 00\n\
3805 506 14: be 28 00\n\
3806 506 14: be 29 00\n\
3807 506 14: be 2a 00\n\
3808 506 14: be 2b 7f\n\
3809 506 14: be 2c 00\n\
3810 506 14: be 2d 00\n\
3811 506 14: be 2e 00\n\
3812 506 14: be 2f 00\n\
3813 506 14: be 30 00\n\
3814 506 14: be 31 00\n\
3815 506 14: be 32 00\n\
3816 506 14: be 33 00\n\
3817 506 14: be 34 00\n\
3818 506 14: be 35 00\n\
3819 506 14: be 36 00\n\
3820 506 14: be 37 00\n\
3821 506 14: be 38 00\n\
3822 506 14: be 39 00\n\
3823 506 14: be 3a 00\n\
3824 506 14: be 3b 00\n\
3825 506 14: be 3c 00\n\
3826 506 14: be 3d 00\n\
3827 506 14: be 3e 00\n\
3828 506 14: be 3f 00\n\
3829 506 14: be 41 00\n\
3830 506 14: be 43 00\n\
3831 506 14: be 50 00\n\
3832 506 14: be 51 00\n\
3833 506 14: be 52 00\n\
3834 506 14: be 53 00\n\
3835 506 14: be 54 00\n\
3836 506 14: be 55 00\n\
3837 506 14: be 56 00\n\
3838 506 14: be 57 00\n\
3839 506 14: be 58 00\n\
3840 506 14: be 59 00\n\
3841 506 14: be 5a 00\n\
3842 506 14: be 62 7f\n\
3843 506 14: be 63 7f\n\
3844 506 14: be 64 7f\n\
3845 506 14: be 65 7f\n\
3846 506 14: be 66 00\n\
3847 506 14: be 67 00\n\
3848 506 14: be 68 00\n\
3849 506 14: be 69 00\n\
3850 506 14: be 6a 00\n\
3851 506 14: be 6b 00\n\
3852 506 14: be 6c 00\n\
3853 506 14: be 6d 00\n\
3854 506 14: be 6e 00\n\
3855 506 14: be 6f 00\n\
3856 506 14: be 70 00\n\
3857 506 14: be 71 00\n\
3858 506 14: be 72 00\n\
3859 506 14: be 73 00\n\
3860 506 14: be 74 00\n\
3861 506 14: be 75 00\n\
3862 506 14: be 76 00\n\
3863 506 14: be 77 00\n\
3864 507 14: 8e 40 43\n\
3865 508 15: bf 40 00\n\
3866 508 15: bf 42 00\n\
3867 508 15: bf 44 00\n\
3868 508 15: bf 45 00\n\
3869 508 15: bf 00 25\n\
3870 508 15: bf 20 45\n\
3871 508 15: 9f 40 45\n\
3872 508 15: bf 07 28\n\
3873 508 15: bf 0a 17\n\
3874 508 15: bf 46 43\n\
3875 508 15: bf 47 68\n\
3876 508 15: bf 48 0d\n\
3877 508 15: bf 49 32\n\
3878 508 15: bf 4a 57\n\
3879 508 15: bf 4b 7c\n\
3880 508 15: bf 4c 21\n\
3881 508 15: bf 4d 46\n\
3882 508 15: bf 4e 6b\n\
3883 508 15: bf 4f 10\n\
3884 508 15: bf 5b 4c\n\
3885 508 15: bf 5c 71\n\
3886 508 15: bf 5d 16\n\
3887 508 15: bf 5e 3b\n\
3888 508 15: bf 5f 60\n\
3889 508 15: bf 01 00\n\
3890 508 15: bf 02 00\n\
3891 508 15: bf 03 00\n\
3892 508 15: bf 04 00\n\
3893 508 15: bf 05 00\n\
3894 508 15: bf 08 40\n\
3895 508 15: bf 09 00\n\
3896 508 15: bf 0b 7f\n\
3897 508 15: bf 0c 00\n\
3898 508 15: bf 0d 00\n\
3899 508 15: bf 0e 00\n\
3900 508 15: bf 0f 00\n\
3901 508 15: bf 10 00\n\
3902 508 15: bf 11 00\n\
3903 508 15: bf 12 00\n\
3904 508 15: bf 13 00\n\
3905 508 15: bf 14 00\n\
3906 508 15: bf 15 00\n\
3907 508 15: bf 16 00\n\
3908 508 15: bf 17 00\n\
3909 508 15: bf 18 00\n\
3910 508 15: bf 19 00\n\
3911 508 15: bf 1a 00\n\
3912 508 15: bf 1b 00\n\
3913 508 15: bf 1c 00\n\
3914 508 15: bf 1d 00\n\
3915 508 15: bf 1e 00\n\
3916 508 15: bf 1f 00\n\
3917 508 15: bf 21 00\n\
3918 508 15: bf 22 00\n\
3919 508 15: bf 23 00\n\
3920 508 15: bf 24 00\n\
3921 508 15: bf 25 00\n\
3922 508 15: bf 27 00\n\
3923 508 15: bf 28 00\n\
3924 508 15: bf 29 00\n\
3925 508 15: bf 2a 00\n\
3926 508 15: bf 2b 7f\n\
3927 508 15: bf 2c 00\n\
3928 508 15: bf 2d 00\n\
3929 508 15: bf 2e 00\n\
3930 508 15: bf 2f 00\n\
3931 508 15: bf 30 00\n\
3932 508 15: bf 31 00\n\
3933 508 15: bf 32 00\n\
3934 508 15: bf 33 00\n\
3935 508 15: bf 34 00\n\
3936 508 15: bf 35 00\n\
3937 508 15: bf 36 00\n\
3938 508 15: bf 37 00\n\
3939 508 15: bf 38 00\n\
3940 508 15: bf 39 00\n\
3941 508 15: bf 3a 00\n\
3942 508 15: bf 3b 00\n\
3943 508 15: bf 3c 00\n\
3944 508 15: bf 3d 00\n\
3945 508 15: bf 3e 00\n\
3946 508 15: bf 3f 00\n\
3947 508 15: bf 41 00\n\
3948 508 15: bf 43 00\n\
3949 508 15: bf 50 00\n\
3950 508 15: bf 51 00\n\
3951 508 15: bf 52 00\n\
3952 508 15: bf 53 00\n\
3953 508 15: bf 54 00\n\
3954 508 15: bf 55 00\n\
3955 508 15: bf 56 00\n\
3956 508 15: bf 57 00\n\
3957 508 15: bf 58 00\n\
3958 508 15: bf 59 00\n\
3959 508 15: bf 5a 00\n\
3960 508 15: bf 62 7f\n\
3961 508 15: bf 63 7f\n\
3962 508 15: bf 64 7f\n\
3963 508 15: bf 65 7f\n\
3964 508 15: bf 66 00\n\
3965 508 15: bf 67 00\n\
3966 508 15: bf 68 00\n\
3967 508 15: bf 69 00\n\
3968 508 15: bf 6a 00\n\
3969 508 15: bf 6b 00\n\
3970 508 15: bf 6c 00\n\
3971 508 15: bf 6d 00\n\
3972 508 15: bf 6e 00\n\
3973 508 15: bf 6f 00\n\
3974 508 15: bf 70 00\n\
3975 508 15: bf 71 00\n\
3976 508 15: bf 72 00\n\
3977 508 15: bf 73 00\n\
3978 508 15: bf 74 00\n\
3979 508 15: bf 75 00\n\
3980 508 15: bf 76 00\n\
3981 508 15: bf 77 00\n\
3982 509 15: 8f 40 45\n\
3983 510 0: b0 00 25\n\
3984 510 0: b0 20 45\n\
3985 510 0: 90 40 47\n\
3986 510 0: b0 01 00\n\
3987 510 0: b0 03 00\n\
3988 510 0: b0 05 00\n\
3989 510 0: b0 08 40\n\
3990 510 0: b0 0b 7f\n\
3991 510 0: b0 0d 00\n\
3992 510 0: b0 0f 00\n\
3993 510 0: b0 11 00\n\
3994 510 0: b0 13 00\n\
3995 510 0: b0 15 00\n\
3996 510 0: b0 17 00\n\
3997 510 0: b0 19 00\n\
3998 510 0: b0 1b 00\n\
3999 510 0: b0 1d 00\n\
4000 510 0: b0 1f 00\n\
4001 510 0: b0 22 00\n\
4002 510 0: b0 24 00\n\
4003 510 0: b0 27 00\n\
4004 510 0: b0 29 00\n\
4005 510 0: b0 2b 7f\n\
4006 510 0: b0 2d 00\n\
4007 510 0: b0 2f 00\n\
4008 510 0: b0 31 00\n\
4009 510 0: b0 33 00\n\
4010 510 0: b0 35 00\n\
4011 510 0: b0 37 00\n\
4012 510 0: b0 39 00\n\
4013 510 0: b0 3b 00\n\
4014 510 0: b0 3d 00\n\
4015 510 0: b0 3f 00\n\
4016 510 0: b0 43 00\n\
4017 510 0: b0 50 00\n\
4018 510 0: b0 52 00\n\
4019 510 0: b0 54 00\n\
4020 510 0: b0 56 00\n\
4021 510 0: b0 58 00\n\
4022 510 0: b0 5a 00\n\
4023 510 0: b0 66 00\n\
4024 510 0: b0 68 00\n\
4025 510 0: b0 6a 00\n\
4026 510 0: b0 6c 00\n\
4027 510 0: b0 6e 00\n\
4028 510 0: b0 70 00\n\
4029 510 0: b0 72 00\n\
4030 510 0: b0 74 00\n\
4031 510 0: b0 76 00\n\
4032 510 0: b0 02 00\n\
4033 510 0: b0 04 00\n\
4034 510 0: b0 09 00\n\
4035 510 0: b0 0c 00\n\
4036 510 0: b0 0e 00\n\
4037 510 0: b0 10 00\n\
4038 510 0: b0 12 00\n\
4039 510 0: b0 14 00\n\
4040 510 0: b0 16 00\n\
4041 510 0: b0 18 00\n\
4042 510 0: b0 1a 00\n\
4043 510 0: b0 1c 00\n\
4044 510 0: b0 1e 00\n\
4045 510 0: b0 21 00\n\
4046 510 0: b0 23 00\n\
4047 510 0: b0 25 00\n\
4048 510 0: b0 28 00\n\
4049 510 0: b0 2a 00\n\
4050 510 0: b0 2c 00\n\
4051 510 0: b0 2e 00\n\
4052 510 0: b0 30 00\n\
4053 510 0: b0 32 00\n\
4054 510 0: b0 34 00\n\
4055 510 0: b0 36 00\n\
4056 510 0: b0 38 00\n\
4057 510 0: b0 3a 00\n\
4058 510 0: b0 3c 00\n\
4059 510 0: b0 3e 00\n\
4060 510 0: b0 41 00\n\
4061 510 0: b0 51 00\n\
4062 510 0: b0 53 00\n\
4063 510 0: b0 55 00\n\
4064 510 0: b0 57 00\n\
4065 510 0: b0 59 00\n\
4066 510 0: b0 62 7f\n\
4067 510 0: b0 63 7f\n\
4068 510 0: b0 64 7f\n\
4069 510 0: b0 65 7f\n\
4070 510 0: b0 67 00\n\
4071 510 0: b0 69 00\n\
4072 510 0: b0 6b 00\n\
4073 510 0: b0 6d 00\n\
4074 510 0: b0 6f 00\n\
4075 510 0: b0 71 00\n\
4076 510 0: b0 73 00\n\
4077 510 0: b0 75 00\n\
4078 510 0: b0 77 00\n\
4079 511 0: 80 40 47\n\
4080 512 1: b1 00 25\n\
4081 512 1: b1 20 45\n\
4082 512 1: 91 40 49\n\
4083 512 1: b1 01 00\n\
4084 512 1: b1 03 00\n\
4085 512 1: b1 05 00\n\
4086 512 1: b1 08 40\n\
4087 512 1: b1 0b 7f\n\
4088 512 1: b1 0d 00\n\
4089 512 1: b1 0f 00\n\
4090 512 1: b1 11 00\n\
4091 512 1: b1 13 00\n\
4092 512 1: b1 15 00\n\
4093 512 1: b1 17 00\n\
4094 512 1: b1 19 00\n\
4095 512 1: b1 1b 00\n\
4096 512 1: b1 1d 00\n\
4097 512 1: b1 1f 00\n\
4098 512 1: b1 22 00\n\
4099 512 1: b1 24 00\n\
4100 512 1: b1 27 00\n\
4101 512 1: b1 29 00\n\
4102 512 1: b1 2b 7f\n\
4103 512 1: b1 2d 00\n\
4104 512 1: b1 2f 00\n\
4105 512 1: b1 31 00\n\
4106 512 1: b1 33 00\n\
4107 512 1: b1 35 00\n\
4108 512 1: b1 37 00\n\
4109 512 1: b1 39 00\n\
4110 512 1: b1 3b 00\n\
4111 512 1: b1 3d 00\n\
4112 512 1: b1 3f 00\n\
4113 512 1: b1 43 00\n\
4114 512 1: b1 50 00\n\
4115 512 1: b1 52 00\n\
4116 512 1: b1 54 00\n\
4117 512 1: b1 56 00\n\
4118 512 1: b1 58 00\n\
4119 512 1: b1 5a 00\n\
4120 512 1: b1 66 00\n\
4121 512 1: b1 68 00\n\
4122 512 1: b1 6a 00\n\
4123 512 1: b1 6c 00\n\
4124 512 1: b1 6e 00\n\
4125 512 1: b1 70 00\n\
4126 512 1: b1 72 00\n\
4127 512 1: b1 74 00\n\
4128 512 1: b1 76 00\n\
4129 512 1: b1 02 00\n\
4130 512 1: b1 04 00\n\
4131 512 1: b1 09 00\n\
4132 512 1: b1 0c 00\n\
4133 512 1: b1 0e 00\n\
4134 512 1: b1 10 00\n\
4135 512 1: b1 12 00\n\
4136 512 1: b1 14 00\n\
4137 512 1: b1 16 00\n\
4138 512 1: b1 18 00\n\
4139 512 1: b1 1a 00\n\
4140 512 1: b1 1c 00\n\
4141 512 1: b1 1e 00\n\
4142 512 1: b1 21 00\n\
4143 512 1: b1 23 00\n\
4144 512 1: b1 25 00\n\
4145 512 1: b1 28 00\n\
4146 512 1: b1 2a 00\n\
4147 512 1: b1 2c 00\n\
4148 512 1: b1 2e 00\n\
4149 512 1: b1 30 00\n\
4150 512 1: b1 32 00\n\
4151 512 1: b1 34 00\n\
4152 512 1: b1 36 00\n\
4153 512 1: b1 38 00\n\
4154 512 1: b1 3a 00\n\
4155 512 1: b1 3c 00\n\
4156 512 1: b1 3e 00\n\
4157 512 1: b1 41 00\n\
4158 512 1: b1 51 00\n\
4159 512 1: b1 53 00\n\
4160 512 1: b1 55 00\n\
4161 512 1: b1 57 00\n\
4162 512 1: b1 59 00\n\
4163 512 1: b1 62 7f\n\
4164 512 1: b1 63 7f\n\
4165 512 1: b1 64 7f\n\
4166 512 1: b1 65 7f\n\
4167 512 1: b1 67 00\n\
4168 512 1: b1 69 00\n\
4169 512 1: b1 6b 00\n\
4170 512 1: b1 6d 00\n\
4171 512 1: b1 6f 00\n\
4172 512 1: b1 71 00\n\
4173 512 1: b1 73 00\n\
4174 512 1: b1 75 00\n\
4175 512 1: b1 77 00\n\
4176 513 1: 81 40 49\n\
4177 514 2: b2 00 25\n\
4178 514 2: b2 20 45\n\
4179 514 2: 92 40 49\n\
4180 514 2: b2 01 00\n\
4181 514 2: b2 03 00\n\
4182 514 2: b2 05 00\n\
4183 514 2: b2 08 40\n\
4184 514 2: b2 0b 7f\n\
4185 514 2: b2 0d 00\n\
4186 514 2: b2 0f 00\n\
4187 514 2: b2 11 00\n\
4188 514 2: b2 13 00\n\
4189 514 2: b2 15 00\n\
4190 514 2: b2 17 00\n\
4191 514 2: b2 19 00\n\
4192 514 2: b2 1b 00\n\
4193 514 2: b2 1d 00\n\
4194 514 2: b2 1f 00\n\
4195 514 2: b2 22 00\n\
4196 514 2: b2 24 00\n\
4197 514 2: b2 27 00\n\
4198 514 2: b2 29 00\n\
4199 514 2: b2 2b 7f\n\
4200 514 2: b2 2d 00\n\
4201 514 2: b2 2f 00\n\
4202 514 2: b2 31 00\n\
4203 514 2: b2 33 00\n\
4204 514 2: b2 35 00\n\
4205 514 2: b2 37 00\n\
4206 514 2: b2 39 00\n\
4207 514 2: b2 3b 00\n\
4208 514 2: b2 3d 00\n\
4209 514 2: b2 3f 00\n\
4210 514 2: b2 43 00\n\
4211 514 2: b2 50 00\n\
4212 514 2: b2 52 00\n\
4213 514 2: b2 54 00\n\
4214 514 2: b2 56 00\n\
4215 514 2: b2 58 00\n\
4216 514 2: b2 5a 00\n\
4217 514 2: b2 66 00\n\
4218 514 2: b2 68 00\n\
4219 514 2: b2 6a 00\n\
4220 514 2: b2 6c 00\n\
4221 514 2: b2 6e 00\n\
4222 514 2: b2 70 00\n\
4223 514 2: b2 72 00\n\
4224 514 2: b2 74 00\n\
4225 514 2: b2 76 00\n\
4226 514 2: b2 02 00\n\
4227 514 2: b2 04 00\n\
4228 514 2: b2 09 00\n\
4229 514 2: b2 0c 00\n\
4230 514 2: b2 0e 00\n\
4231 514 2: b2 10 00\n\
4232 514 2: b2 12 00\n\
4233 514 2: b2 14 00\n\
4234 514 2: b2 16 00\n\
4235 514 2: b2 18 00\n\
4236 514 2: b2 1a 00\n\
4237 514 2: b2 1c 00\n\
4238 514 2: b2 1e 00\n\
4239 514 2: b2 21 00\n\
4240 514 2: b2 23 00\n\
4241 514 2: b2 25 00\n\
4242 514 2: b2 28 00\n\
4243 514 2: b2 2a 00\n\
4244 514 2: b2 2c 00\n\
4245 514 2: b2 2e 00\n\
4246 514 2: b2 30 00\n\
4247 514 2: b2 32 00\n\
4248 514 2: b2 34 00\n\
4249 514 2: b2 36 00\n\
4250 514 2: b2 38 00\n\
4251 514 2: b2 3a 00\n\
4252 514 2: b2 3c 00\n\
4253 514 2: b2 3e 00\n\
4254 514 2: b2 41 00\n\
4255 514 2: b2 51 00\n\
4256 514 2: b2 53 00\n\
4257 514 2: b2 55 00\n\
4258 514 2: b2 57 00\n\
4259 514 2: b2 59 00\n\
4260 514 2: b2 62 7f\n\
4261 514 2: b2 63 7f\n\
4262 514 2: b2 64 7f\n\
4263 514 2: b2 65 7f\n\
4264 514 2: b2 67 00\n\
4265 514 2: b2 69 00\n\
4266 514 2: b2 6b 00\n\
4267 514 2: b2 6d 00\n\
4268 514 2: b2 6f 00\n\
4269 514 2: b2 71 00\n\
4270 514 2: b2 73 00\n\
4271 514 2: b2 75 00\n\
4272 514 2: b2 77 00\n\
4273 515 2: 82 40 49\n\
4274 516 3: b3 00 25\n\
4275 516 3: b3 20 45\n\
4276 516 3: 93 40 4b\n\
4277 516 3: b3 01 00\n\
4278 516 3: b3 03 00\n\
4279 516 3: b3 05 00\n\
4280 516 3: b3 08 40\n\
4281 516 3: b3 0b 7f\n\
4282 516 3: b3 0d 00\n\
4283 516 3: b3 0f 00\n\
4284 516 3: b3 11 00\n\
4285 516 3: b3 13 00\n\
4286 516 3: b3 15 00\n\
4287 516 3: b3 17 00\n\
4288 516 3: b3 19 00\n\
4289 516 3: b3 1b 00\n\
4290 516 3: b3 1d 00\n\
4291 516 3: b3 1f 00\n\
4292 516 3: b3 22 00\n\
4293 516 3: b3 24 00\n\
4294 516 3: b3 27 00\n\
4295 516 3: b3 29 00\n\
4296 516 3: b3 2b 7f\n\
4297 516 3: b3 2d 00\n\
4298 516 3: b3 2f 00\n\
4299 516 3: b3 31 00\n\
4300 516 3: b3 33 00\n\
4301 516 3: b3 35 00\n\
4302 516 3: b3 37 00\n\
4303 516 3: b3 39 00\n\
4304 516 3: b3 3b 00\n\
4305 516 3: b3 3d 00\n\
4306 516 3: b3 3f 00\n\
4307 516 3: b3 43 00\n\
4308 516 3: b3 50 00\n\
4309 516 3: b3 52 00\n\
4310 516 3: b3 54 00\n\
4311 516 3: b3 56 00\n\
4312 516 3: b3 58 00\n\
4313 516 3: b3 5a 00\n\
4314 516 3: b3 66 00\n\
4315 516 3: b3 68 00\n\
4316 516 3: b3 6a 00\n\
4317 516 3: b3 6c 00\n\
4318 516 3: b3 6e 00\n\
4319 516 3: b3 70 00\n\
4320 516 3: b3 72 00\n\
4321 516 3: b3 74 00\n\
4322 516 3: b3 76 00\n\
4323 516 3: b3 02 00\n\
4324 516 3: b3 04 00\n\
4325 516 3: b3 09 00\n\
4326 516 3: b3 0c 00\n\
4327 516 3: b3 0e 00\n\
4328 516 3: b3 10 00\n\
4329 516 3: b3 12 00\n\
4330 516 3: b3 14 00\n\
4331 516 3: b3 16 00\n\
4332 516 3: b3 18 00\n\
4333 516 3: b3 1a 00\n\
4334 516 3: b3 1c 00\n\
4335 516 3: b3 1e 00\n\
4336 516 3: b3 21 00\n\
4337 516 3: b3 23 00\n\
4338 516 3: b3 25 00\n\
4339 516 3: b3 28 00\n\
4340 516 3: b3 2a 00\n\
4341 516 3: b3 2c 00\n\
4342 516 3: b3 2e 00\n\
4343 516 3: b3 30 00\n\
4344 516 3: b3 32 00\n\
4345 516 3: b3 34 00\n\
4346 516 3: b3 36 00\n\
4347 516 3: b3 38 00\n\
4348 516 3: b3 3a 00\n\
4349 516 3: b3 3c 00\n\
4350 516 3: b3 3e 00\n\
4351 516 3: b3 41 00\n\
4352 516 3: b3 51 00\n\
4353 516 3: b3 53 00\n\
4354 516 3: b3 55 00\n\
4355 516 3: b3 57 00\n\
4356 516 3: b3 59 00\n\
4357 516 3: b3 62 7f\n\
4358 516 3: b3 63 7f\n\
4359 516 3: b3 64 7f\n\
4360 516 3: b3 65 7f\n\
4361 516 3: b3 67 00\n\
4362 516 3: b3 69 00\n\
4363 516 3: b3 6b 00\n\
4364 516 3: b3 6d 00\n\
4365 516 3: b3 6f 00\n\
4366 516 3: b3 71 00\n\
4367 516 3: b3 73 00\n\
4368 516 3: b3 75 00\n\
4369 516 3: b3 77 00\n\
4370 517 3: 83 40 4b\n\
4371 518 4: b4 00 25\n\
4372 518 4: b4 20 45\n\
4373 518 4: 94 40 4d\n\
4374 518 4: b4 01 00\n\
4375 518 4: b4 03 00\n\
4376 518 4: b4 05 00\n\
4377 518 4: b4 08 40\n\
4378 518 4: b4 0b 7f\n\
4379 518 4: b4 0d 00\n\
4380 518 4: b4 0f 00\n\
4381 518 4: b4 11 00\n\
4382 518 4: b4 13 00\n\
4383 518 4: b4 15 00\n\
4384 518 4: b4 17 00\n\
4385 518 4: b4 19 00\n\
4386 518 4: b4 1b 00\n\
4387 518 4: b4 1d 00\n\
4388 518 4: b4 1f 00\n\
4389 518 4: b4 22 00\n\
4390 518 4: b4 24 00\n\
4391 518 4: b4 27 00\n\
4392 518 4: b4 29 00\n\
4393 518 4: b4 2b 7f\n\
4394 518 4: b4 2d 00\n\
4395 518 4: b4 2f 00\n\
4396 518 4: b4 31 00\n\
4397 518 4: b4 33 00\n\
4398 518 4: b4 35 00\n\
4399 518 4: b4 37 00\n\
4400 518 4: b4 39 00\n\
4401 518 4: b4 3b 00\n\
4402 518 4: b4 3d 00\n\
4403 518 4: b4 3f 00\n\
4404 518 4: b4 43 00\n\
4405 518 4: b4 50 00\n\
4406 518 4: b4 52 00\n\
4407 518 4: b4 54 00\n\
4408 518 4: b4 56 00\n\
4409 518 4: b4 58 00\n\
4410 518 4: b4 5a 00\n\
4411 518 4: b4 66 00\n\
4412 518 4: b4 68 00\n\
4413 518 4: b4 6a 00\n\
4414 518 4: b4 6c 00\n\
4415 518 4: b4 6e 00\n\
4416 518 4: b4 70 00\n\
4417 518 4: b4 72 00\n\
4418 518 4: b4 74 00\n\
4419 518 4: b4 76 00\n\
4420 518 4: b4 02 00\n\
4421 518 4: b4 04 00\n\
4422 518 4: b4 09 00\n\
4423 518 4: b4 0c 00\n\
4424 518 4: b4 0e 00\n\
4425 518 4: b4 10 00\n\
4426 518 4: b4 12 00\n\
4427 518 4: b4 14 00\n\
4428 518 4: b4 16 00\n\
4429 518 4: b4 18 00\n\
4430 518 4: b4 1a 00\n\
4431 518 4: b4 1c 00\n\
4432 518 4: b4 1e 00\n\
4433 518 4: b4 21 00\n\
4434 518 4: b4 23 00\n\
4435 518 4: b4 25 00\n\
4436 518 4: b4 28 00\n\
4437 518 4: b4 2a 00\n\
4438 518 4: b4 2c 00\n\
4439 518 4: b4 2e 00\n\
4440 518 4: b4 30 00\n\
4441 518 4: b4 32 00\n\
4442 518 4: b4 34 00\n\
4443 518 4: b4 36 00\n\
4444 518 4: b4 38 00\n\
4445 518 4: b4 3a 00\n\
4446 518 4: b4 3c 00\n\
4447 518 4: b4 3e 00\n\
4448 518 4: b4 41 00\n\
4449 518 4: b4 51 00\n\
4450 518 4: b4 53 00\n\
4451 518 4: b4 55 00\n\
4452 518 4: b4 57 00\n\
4453 518 4: b4 59 00\n\
4454 518 4: b4 62 7f\n\
4455 518 4: b4 63 7f\n\
4456 518 4: b4 64 7f\n\
4457 518 4: b4 65 7f\n\
4458 518 4: b4 67 00\n\
4459 518 4: b4 69 00\n\
4460 518 4: b4 6b 00\n\
4461 518 4: b4 6d 00\n\
4462 518 4: b4 6f 00\n\
4463 518 4: b4 71 00\n\
4464 518 4: b4 73 00\n\
4465 518 4: b4 75 00\n\
4466 518 4: b4 77 00\n\
4467 519 4: 84 40 4d\n\
4468 520 5: b5 00 25\n\
4469 520 5: b5 20 45\n\
4470 520 5: 95 40 4f\n\
4471 521 5: 85 40 4f\n\
4472 522 6: b6 00 25\n\
4473 522 6: b6 20 45\n\
4474 522 6: 96 40 4f\n\
4475 523 6: 86 40 4f\n\
4476 524 7: b7 00 25\n\
4477 524 7: b7 20 45\n\
4478 524 7: 97 40 4f\n\
4479 525 7: 87 40 4f\n\
4480 526 8: b8 00 25\n\
4481 526 8: b8 20 45\n\
4482 526 8: 98 40 4f\n\
4483 527 8: 88 40 4f\n\
4484 528 10: ba 00 25\n\
4485 528 10: ba 20 45\n\
4486 528 10: 9a 40 4f\n\
4487 529 10: 8a 40 4f\n\
4488 531 11: bb 00 25\n\
4489 531 11: bb 20 45\n\
4490 531 11: 9b 40 4f\n\
4491 531 11: 8b 40 4f\n\
4492 532 12: bc 00 25\n\
4493 532 12: bc 20 45\n\
4494 532 12: 9c 40 4f\n\
4495 533 12: 8c 40 4f\n\
4496 534 13: bd 00 25\n\
4497 534 13: bd 20 45\n\
4498 534 13: 9d 40 4f\n\
4499 535 13: 8d 40 4f\n\
4500 536 14: be 00 25\n\
4501 536 14: be 20 45\n\
4502 536 14: 9e 40 4f\n\
4503 537 14: 8e 40 4f\n\
4504 538 15: bf 00 25\n\
4505 538 15: bf 20 45\n\
4506 538 15: 9f 40 4f\n\
4507 539 15: 8f 40 4f\n\
4508 540 0: b0 00 25\n\
4509 540 0: b0 20 45\n\
4510 540 0: 90 40 4f\n\
4511 541 0: 80 40 4f\n\
4512 542 1: b1 00 25\n\
4513 542 1: b1 20 45\n\
4514 542 1: 91 40 4f\n\
4515 543 1: 81 40 4f\n\
4516 544 2: b2 00 25\n\
4517 544 2: b2 20 45\n\
4518 544 2: 92 40 4f\n\
4519 545 2: 82 40 40\n\
4520 546 ...closed.\n\
4521 "),__LINE__,_T(__FILE__)));
4522 
4523 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
mutabor::InputDevice in
Definition: DevMidFTest.h:78
static const listtype & GetBoxList()
Definition: Box.h:262
static const routeListType & GetRouteList()
Definition: Route.h:400
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:460
not for headers
Definition: midicmnTest.h:66
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:58
void SetBendingRange(int br)
Definition: midicmn.h:550
static Box Create(int type, int id=NewBox)
Definition: Box.h:731
static const listtype & GetDeviceList()
Definition: Device.h:726
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:455
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:592
void CommonMidiInputTest::testGlobalPanic ( )

Definiert in Zeile 1005 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::InputDeviceClass::Close(), DEBUGLOG, DEFAULT_PANIC, midicmnOutputDevice::getOut(), CommonMidiInputTest::in, mutString, midicmnInputDevice::NoteOff(), midicmnInputDevice::NoteOn(), midicmnInputDevice::Open(), mutabor::OutputDeviceClass::Open(), CommonMidiInputTest::out und mutabor::Panic().

1006 {
1007  CPPUNIT_ASSERT( in );
1008  out->Open();
1009  box->Open();
1010  CPPUNIT_ASSERT( out->Check(_T("Opened...\n"
1011  " 0: e0 00 40\n"
1012  " 0: b0 7a 00\n"
1013  " 0: b0 7d 00\n"
1014  " 0: b0 7f 00\n"
1015  " 0: b0 65 00\n"
1016  " 0: b0 64 00\n"
1017  " 0: b0 06 02\n"
1018  " 0: b0 26 00\n"
1019  " 1: e1 00 40\n"
1020  " 1: b1 7a 00\n"
1021  " 1: b1 7d 00\n"
1022  " 1: b1 7f 00\n"
1023  " 1: b1 65 00\n"
1024  " 1: b1 64 00\n"
1025  " 1: b1 06 02\n"
1026  " 1: b1 26 00\n"
1027  " 2: e2 00 40\n"
1028  " 2: b2 7a 00\n"
1029  " 2: b2 7d 00\n"
1030  " 2: b2 7f 00\n"
1031  " 2: b2 65 00\n"
1032  " 2: b2 64 00\n"
1033  " 2: b2 06 02\n"
1034  " 2: b2 26 00\n"
1035  " 3: e3 00 40\n"
1036  " 3: b3 7a 00\n"
1037  " 3: b3 7d 00\n"
1038  " 3: b3 7f 00\n"
1039  " 3: b3 65 00\n"
1040  " 3: b3 64 00\n"
1041  " 3: b3 06 02\n"
1042  " 3: b3 26 00\n"
1043  " 4: e4 00 40\n"
1044  " 4: b4 7a 00\n"
1045  " 4: b4 7d 00\n"
1046  " 4: b4 7f 00\n"
1047  " 4: b4 65 00\n"
1048  " 4: b4 64 00\n"
1049  " 4: b4 06 02\n"
1050  " 4: b4 26 00\n"
1051  " 5: e5 00 40\n"
1052  " 5: b5 7a 00\n"
1053  " 5: b5 7d 00\n"
1054  " 5: b5 7f 00\n"
1055  " 5: b5 65 00\n"
1056  " 5: b5 64 00\n"
1057  " 5: b5 06 02\n"
1058  " 5: b5 26 00\n"
1059  " 6: e6 00 40\n"
1060  " 6: b6 7a 00\n"
1061  " 6: b6 7d 00\n"
1062  " 6: b6 7f 00\n"
1063  " 6: b6 65 00\n"
1064  " 6: b6 64 00\n"
1065  " 6: b6 06 02\n"
1066  " 6: b6 26 00\n"
1067  " 7: e7 00 40\n"
1068  " 7: b7 7a 00\n"
1069  " 7: b7 7d 00\n"
1070  " 7: b7 7f 00\n"
1071  " 7: b7 65 00\n"
1072  " 7: b7 64 00\n"
1073  " 7: b7 06 02\n"
1074  " 7: b7 26 00\n"
1075  " 8: e8 00 40\n"
1076  " 8: b8 7a 00\n"
1077  " 8: b8 7d 00\n"
1078  " 8: b8 7f 00\n"
1079  " 8: b8 65 00\n"
1080  " 8: b8 64 00\n"
1081  " 8: b8 06 02\n"
1082  " 8: b8 26 00\n"
1083  " 9: e9 00 40\n"
1084  " 9: b9 7a 00\n"
1085  " 9: b9 7d 00\n"
1086  " 9: b9 7f 00\n"
1087  " 9: b9 65 00\n"
1088  " 9: b9 64 00\n"
1089  " 9: b9 06 02\n"
1090  " 9: b9 26 00\n"
1091  " 10: ea 00 40\n"
1092  " 10: ba 7a 00\n"
1093  " 10: ba 7d 00\n"
1094  " 10: ba 7f 00\n"
1095  " 10: ba 65 00\n"
1096  " 10: ba 64 00\n"
1097  " 10: ba 06 02\n"
1098  " 10: ba 26 00\n"
1099  " 11: eb 00 40\n"
1100  " 11: bb 7a 00\n"
1101  " 11: bb 7d 00\n"
1102  " 11: bb 7f 00\n"
1103  " 11: bb 65 00\n"
1104  " 11: bb 64 00\n"
1105  " 11: bb 06 02\n"
1106  " 11: bb 26 00\n"
1107  " 12: ec 00 40\n"
1108  " 12: bc 7a 00\n"
1109  " 12: bc 7d 00\n"
1110  " 12: bc 7f 00\n"
1111  " 12: bc 65 00\n"
1112  " 12: bc 64 00\n"
1113  " 12: bc 06 02\n"
1114  " 12: bc 26 00\n"
1115  " 13: ed 00 40\n"
1116  " 13: bd 7a 00\n"
1117  " 13: bd 7d 00\n"
1118  " 13: bd 7f 00\n"
1119  " 13: bd 65 00\n"
1120  " 13: bd 64 00\n"
1121  " 13: bd 06 02\n"
1122  " 13: bd 26 00\n"
1123  " 14: ee 00 40\n"
1124  " 14: be 7a 00\n"
1125  " 14: be 7d 00\n"
1126  " 14: be 7f 00\n"
1127  " 14: be 65 00\n"
1128  " 14: be 64 00\n"
1129  " 14: be 06 02\n"
1130  " 14: be 26 00\n"
1131  " 15: ef 00 40\n"
1132  " 15: bf 7a 00\n"
1133  " 15: bf 7d 00\n"
1134  " 15: bf 7f 00\n"
1135  " 15: bf 65 00\n"
1136  " 15: bf 64 00\n"
1137  " 15: bf 06 02\n"
1138  " 15: bf 26 00\n"), __LINE__, _T(__FILE__)) );
1139  in->Open();
1140 
1141  /* check all permutations */
1142 
1143  DEBUGLOG(midiio,_T("123"));
1144 
1145  in->NoteOn(0,56,96);
1146  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n"), __LINE__, _T(__FILE__) ) );
1147  in->NoteOn(0,60,97);
1148  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
1149  in->NoteOn(0,63,98);
1150  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n"), __LINE__, _T(__FILE__) ) );
1151 
1152  in->NoteOff(0,56,53);
1153  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n"), __LINE__, _T(__FILE__) ) );
1154  in->NoteOff(0,60,54);
1155  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__) ) );
1156  in->NoteOff(0,63,55);
1157  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n"), __LINE__, _T(__FILE__) ) );
1158 
1159  DEBUGLOG(midiio,_T("132"));
1160 
1161  in->NoteOn(0,56,96);
1162  CPPUNIT_ASSERT( out->Check(_T(" 3: 93 38 60\n"), __LINE__, _T(__FILE__) ) );
1163  in->NoteOn(0,60,97);
1164  CPPUNIT_ASSERT( out->Check(_T(" 4: 94 3c 61\n"), __LINE__, _T(__FILE__) ) );
1165  in->NoteOn(0,63,98);
1166  CPPUNIT_ASSERT( out->Check(_T(" 5: 95 3f 62\n"), __LINE__, _T(__FILE__) ) );
1167 
1168  in->NoteOff(0,56,53);
1169  CPPUNIT_ASSERT( out->Check(_T(" 3: 83 38 35\n"), __LINE__, _T(__FILE__) ) );
1170  in->NoteOff(0,63,55);
1171  CPPUNIT_ASSERT( out->Check(_T(" 5: 85 3f 37\n"), __LINE__, _T(__FILE__) ) );
1172  in->NoteOff(0,60,54);
1173  CPPUNIT_ASSERT( out->Check(_T(" 4: 84 3c 36\n"), __LINE__, _T(__FILE__) ) );
1174 
1175  DEBUGLOG(midiio,_T("213"));
1176 
1177  in->NoteOn(0,56,96);
1178  CPPUNIT_ASSERT( out->Check(_T(" 6: 96 38 60\n"), __LINE__, _T(__FILE__) ) );
1179  in->NoteOn(0,60,97);
1180  CPPUNIT_ASSERT( out->Check(_T(" 7: 97 3c 61\n"), __LINE__, _T(__FILE__) ) );
1181  in->NoteOn(0,63,98);
1182  CPPUNIT_ASSERT( out->Check(_T(" 8: 98 3f 62\n"), __LINE__, _T(__FILE__) ) );
1183 
1184  in->NoteOff(0,60,54);
1185  CPPUNIT_ASSERT( out->Check(_T(" 7: 87 3c 36\n"), __LINE__, _T(__FILE__) ) );
1186  in->NoteOff(0,56,53);
1187  CPPUNIT_ASSERT( out->Check(_T(" 6: 86 38 35\n"), __LINE__, _T(__FILE__) ) );
1188  in->NoteOff(0,63,55);
1189  CPPUNIT_ASSERT( out->Check(_T(" 8: 88 3f 37\n"), __LINE__, _T(__FILE__) ) );
1190 
1191  DEBUGLOG(midiio,_T("231"));
1192 
1193  in->NoteOn(0,56,96);
1194  CPPUNIT_ASSERT( out->Check(_T(" 10: 9a 38 60\n"), __LINE__, _T(__FILE__) ) );
1195  in->NoteOn(0,60,97);
1196  CPPUNIT_ASSERT( out->Check(_T(" 11: 9b 3c 61\n"), __LINE__, _T(__FILE__) ) );
1197  in->NoteOn(0,63,98);
1198  CPPUNIT_ASSERT( out->Check(_T(" 12: 9c 3f 62\n"), __LINE__, _T(__FILE__) ) );
1199 
1200  in->NoteOff(0,60,54);
1201  CPPUNIT_ASSERT( out->Check(_T(" 11: 8b 3c 36\n"), __LINE__, _T(__FILE__) ) );
1202  in->NoteOff(0,63,55);
1203  CPPUNIT_ASSERT( out->Check(_T(" 12: 8c 3f 37\n"), __LINE__, _T(__FILE__) ) );
1204  in->NoteOff(0,56,53);
1205  CPPUNIT_ASSERT( out->Check(_T(" 10: 8a 38 35\n"), __LINE__, _T(__FILE__) ) );
1206 
1207  DEBUGLOG(midiio,_T("312"));
1208 
1209  in->NoteOn(0,56,96);
1210  CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 38 60\n"), __LINE__, _T(__FILE__) ) );
1211  in->NoteOn(0,60,97);
1212  CPPUNIT_ASSERT( out->Check(_T(" 14: 9e 3c 61\n"), __LINE__, _T(__FILE__) ) );
1213  in->NoteOn(0,63,98);
1214  CPPUNIT_ASSERT( out->Check(_T(" 15: 9f 3f 62\n"), __LINE__, _T(__FILE__) ) );
1215 
1216  in->NoteOff(0,63,55);
1217  CPPUNIT_ASSERT( out->Check(_T(" 15: 8f 3f 37\n"), __LINE__, _T(__FILE__) ) );
1218  // check sending note on with velocity = 0
1219  in->NoteOff(0,56,53);
1220  CPPUNIT_ASSERT( out->Check(_T(" 13: 8d 38 35\n"), __LINE__, _T(__FILE__) ) );
1221  in->NoteOff(0,60,54);
1222  CPPUNIT_ASSERT( out->Check(_T(" 14: 8e 3c 36\n"), __LINE__, _T(__FILE__) ) );
1223 
1224  DEBUGLOG(midiio,_T("321"));
1225 
1226  // Add check for NULL as tone system parameter
1227  in->NoteOn(0,56,96);
1228  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n"), __LINE__, _T(__FILE__) ) );
1229  in->NoteOn(0,60,97);
1230  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
1231  in->NoteOn(0,63,98);
1232  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n"), __LINE__, _T(__FILE__) ) );
1233 
1234  in->NoteOff(0,63,55);
1235  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n"), __LINE__, _T(__FILE__) ) );
1236  in->NoteOff(0,60,54);
1237  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__) ) );
1238  in->NoteOff(0,56,53);
1239  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n"), __LINE__, _T(__FILE__) ) );
1240 
1241  // now collect data
1242  DEBUGLOG(midiio,_T("123"));
1243  in->NoteOn(0,56,96);
1244  CPPUNIT_ASSERT( out->Check(_T(" 3: 93 38 60\n"), __LINE__, _T(__FILE__) ) );
1245  in->NoteOn(0,60,97);
1246  CPPUNIT_ASSERT( out->Check(_T(" 5: 95 3c 61\n"), __LINE__, _T(__FILE__) ) );
1247  in->NoteOn(0,63,98);
1248  CPPUNIT_ASSERT( out->Check(_T(" 4: 94 3f 62\n"), __LINE__, _T(__FILE__) ) );
1249 
1250  DEBUGLOG(midiio,_T("132"));
1251 
1252  in->NoteOn(0,56,96);
1253  CPPUNIT_ASSERT( out->Check(_T(" 7: 97 38 60\n"), __LINE__, _T(__FILE__) ) );
1254  in->NoteOn(0,60,97);
1255  CPPUNIT_ASSERT( out->Check(_T(" 6: 96 3c 61\n"), __LINE__, _T(__FILE__) ) );
1256  in->NoteOn(0,63,98);
1257  CPPUNIT_ASSERT( out->Check(_T(" 8: 98 3f 62\n"), __LINE__, _T(__FILE__) ) );
1258 
1259  DEBUGLOG(midiio,_T("213"));
1260 
1261  in->NoteOn(0,56,96);
1262  CPPUNIT_ASSERT( out->Check(_T(" 11: 9b 38 60\n"), __LINE__, _T(__FILE__) ) );
1263  in->NoteOn(0,60,97);
1264  CPPUNIT_ASSERT( out->Check(_T(" 12: 9c 3c 61\n"), __LINE__, _T(__FILE__) ) );
1265  in->NoteOn(0,63,98);
1266  CPPUNIT_ASSERT( out->Check(_T(" 10: 9a 3f 62\n"), __LINE__, _T(__FILE__) ) );
1267 
1268  DEBUGLOG(midiio,_T("231"));
1269 
1270  in->NoteOn(0,56,96);
1271  CPPUNIT_ASSERT( out->Check(_T(" 15: 9f 38 60\n"), __LINE__, _T(__FILE__) ) );
1272  in->NoteOn(0,60,97);
1273  CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 3c 61\n"), __LINE__, _T(__FILE__) ) );
1274  in->NoteOn(0,63,98);
1275  CPPUNIT_ASSERT( out->Check(_T(" 14: 9e 3f 62\n"), __LINE__, _T(__FILE__) ) );
1276 
1277  DEBUGLOG(midiio,_T("312"));
1278 
1279  in->NoteOn(0,56,96);
1280  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 38 60\n"), __LINE__, _T(__FILE__) ) );
1281  in->NoteOn(0,60,97);
1282  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
1283  in->NoteOn(0,63,98);
1284  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 3f 62\n"), __LINE__, _T(__FILE__) ) );
1285 
1286  DEBUGLOG(midiio,_T("321"));
1287 
1288  // Add check for NULL as tone system parameter
1289  in->NoteOn(0,56,96);
1290  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 38 40\n 2: 92 38 60\n"), __LINE__, _T(__FILE__) ) );
1291  in->NoteOn(0,60,97);
1292  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 38 40\n 2: 92 3c 61\n"), __LINE__, _T(__FILE__) ) );
1293  in->NoteOn(0,63,98);
1294  CPPUNIT_ASSERT( out->Check(_T(" 3: 83 38 40\n 3: 93 3f 62\n"), __LINE__, _T(__FILE__) ) );
1295 
1296  in->NoteOff(0,56,53);
1297  CPPUNIT_ASSERT( out->Check(_T(" 7: 87 38 35\n"), __LINE__, _T(__FILE__) ) );
1298  in->NoteOff(0,60,54);
1299  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__) ) );
1300  in->NoteOff(0,63,55);
1301  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 3f 37\n"), __LINE__, _T(__FILE__) ) );
1302 
1304  CPPUNIT_ASSERT( out->Check(_T("\
1305  2: b2 40 00\n\
1306  3: b3 40 00\n\
1307  4: b4 40 00\n\
1308  5: b5 40 00\n\
1309  6: b6 40 00\n\
1310  8: b8 40 00\n\
1311  10: ba 40 00\n\
1312  11: bb 40 00\n\
1313  12: bc 40 00\n\
1314  13: bd 40 00\n\
1315  14: be 40 00\n\
1316  15: bf 40 00\n\
1317  2: b2 42 00\n\
1318  3: b3 42 00\n\
1319  4: b4 42 00\n\
1320  5: b5 42 00\n\
1321  6: b6 42 00\n\
1322  8: b8 42 00\n\
1323  10: ba 42 00\n\
1324  11: bb 42 00\n\
1325  12: bc 42 00\n\
1326  13: bd 42 00\n\
1327  14: be 42 00\n\
1328  15: bf 42 00\n\
1329  2: b2 44 00\n\
1330  3: b3 44 00\n\
1331  4: b4 44 00\n\
1332  5: b5 44 00\n\
1333  6: b6 44 00\n\
1334  8: b8 44 00\n\
1335  10: ba 44 00\n\
1336  11: bb 44 00\n\
1337  12: bc 44 00\n\
1338  13: bd 44 00\n\
1339  14: be 44 00\n\
1340  15: bf 44 00\n\
1341  2: b2 45 00\n\
1342  3: b3 45 00\n\
1343  4: b4 45 00\n\
1344  5: b5 45 00\n\
1345  6: b6 45 00\n\
1346  8: b8 45 00\n\
1347  10: ba 45 00\n\
1348  11: bb 45 00\n\
1349  12: bc 45 00\n\
1350  13: bd 45 00\n\
1351  14: be 45 00\n\
1352  15: bf 45 00\n\
1353  3: 83 3f 62\n\
1354  4: 84 3f 62\n\
1355  8: 88 3f 62\n\
1356  10: 8a 3f 62\n\
1357  14: 8e 3f 62\n\
1358  2: 82 3c 61\n\
1359  5: 85 3c 61\n\
1360  6: 86 3c 61\n\
1361  12: 8c 3c 61\n\
1362  13: 8d 3c 61\n\
1363  11: 8b 38 60\n\
1364  15: 8f 38 60\n\
1365  0: b0 78 00\n\
1366  1: b1 78 00\n\
1367  2: b2 78 00\n\
1368  3: b3 78 00\n\
1369  4: b4 78 00\n\
1370  5: b5 78 00\n\
1371  6: b6 78 00\n\
1372  7: b7 78 00\n\
1373  8: b8 78 00\n\
1374  9: b9 78 00\n\
1375  10: ba 78 00\n\
1376  11: bb 78 00\n\
1377  12: bc 78 00\n\
1378  13: bd 78 00\n\
1379  14: be 78 00\n\
1380 "),
1381  __LINE__,
1382  _T(__FILE__) ) );
1383 
1384  in->NoteOff(0,56,53);
1385  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1386  in->NoteOff(0,63,55);
1387  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1388  in->NoteOff(0,60,54);
1389  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1390 
1391  in->NoteOff(0,60,54);
1392  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1393  in->NoteOff(0,56,53);
1394  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1395  in->NoteOff(0,63,55);
1396  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1397 
1398  in->NoteOff(0,60,54);
1399  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1400  in->NoteOff(0,63,55);
1401  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1402  in->NoteOff(0,56,53);
1403  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1404 
1405  in->NoteOff(0,63,55);
1406  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1407  // check sending note on with velocity = 0
1408  in->NoteOff(0,56,53);
1409  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1410  in->NoteOff(0,60,54);
1411  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1412 
1413  in->NoteOff(0,63,55);
1414  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1415  in->NoteOff(0,60,54);
1416  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1417  in->NoteOff(0,56,53);
1418  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
1419 
1420  in->Close();
1421  out->Close();
1422  DEBUGLOG(midiio,_T("|%s|"),((mutString)(out->getOut())).c_str());
1423  CPPUNIT_ASSERT( out->Check(_T("...closed.\n"), __LINE__, _T(__FILE__) ) );
1424 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
midicmnInputDevice * in
Definition: midicmnTest.h:210
#define DEFAULT_PANIC
Definition: MidiKern.h:301
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:77
void Panic(int type)
Definition: Box.cpp:990
midicmnOutputDevice * out
Definition: midicmnTest.h:209
void NoteOn(int channel, int inkey, int velocity)
Definition: midicmnTest.h:160
virtual void Close()
Definition: Device.h:1080
#define mutString
Definition: Defs.h:84
void NoteOff(int channel, int inkey, int velocity)
Definition: midicmnTest.h:167
mutabor::Box box
Definition: midicmnTest.h:212
void CommonMidiOutputTest::testMoreNotesThanChannels ( )

Definiert in Zeile 329 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, CommonMidiOutputTest::cd, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), DEBUGLOG, mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), CommonMidiOutputTest::out und CommonMidiOutputTest::route.

330 {
331  CPPUNIT_ASSERT( out );
332  out->Open();
333  box->Open();
334  CPPUNIT_ASSERT( out->Check(_T("Opened...\n"
335  " 0: e0 00 40\n"
336  " 0: b0 7a 00\n"
337  " 0: b0 7d 00\n"
338  " 0: b0 7f 00\n"
339  " 0: b0 65 00\n"
340  " 0: b0 64 00\n"
341  " 0: b0 06 02\n"
342  " 0: b0 26 00\n"
343  " 1: e1 00 40\n"
344  " 1: b1 7a 00\n"
345  " 1: b1 7d 00\n"
346  " 1: b1 7f 00\n"
347  " 1: b1 65 00\n"
348  " 1: b1 64 00\n"
349  " 1: b1 06 02\n"
350  " 1: b1 26 00\n"
351  " 2: e2 00 40\n"
352  " 2: b2 7a 00\n"
353  " 2: b2 7d 00\n"
354  " 2: b2 7f 00\n"
355  " 2: b2 65 00\n"
356  " 2: b2 64 00\n"
357  " 2: b2 06 02\n"
358  " 2: b2 26 00\n"
359  " 3: e3 00 40\n"
360  " 3: b3 7a 00\n"
361  " 3: b3 7d 00\n"
362  " 3: b3 7f 00\n"
363  " 3: b3 65 00\n"
364  " 3: b3 64 00\n"
365  " 3: b3 06 02\n"
366  " 3: b3 26 00\n"
367  " 4: e4 00 40\n"
368  " 4: b4 7a 00\n"
369  " 4: b4 7d 00\n"
370  " 4: b4 7f 00\n"
371  " 4: b4 65 00\n"
372  " 4: b4 64 00\n"
373  " 4: b4 06 02\n"
374  " 4: b4 26 00\n"
375  " 5: e5 00 40\n"
376  " 5: b5 7a 00\n"
377  " 5: b5 7d 00\n"
378  " 5: b5 7f 00\n"
379  " 5: b5 65 00\n"
380  " 5: b5 64 00\n"
381  " 5: b5 06 02\n"
382  " 5: b5 26 00\n"
383  " 6: e6 00 40\n"
384  " 6: b6 7a 00\n"
385  " 6: b6 7d 00\n"
386  " 6: b6 7f 00\n"
387  " 6: b6 65 00\n"
388  " 6: b6 64 00\n"
389  " 6: b6 06 02\n"
390  " 6: b6 26 00\n"
391  " 7: e7 00 40\n"
392  " 7: b7 7a 00\n"
393  " 7: b7 7d 00\n"
394  " 7: b7 7f 00\n"
395  " 7: b7 65 00\n"
396  " 7: b7 64 00\n"
397  " 7: b7 06 02\n"
398  " 7: b7 26 00\n"
399  " 8: e8 00 40\n"
400  " 8: b8 7a 00\n"
401  " 8: b8 7d 00\n"
402  " 8: b8 7f 00\n"
403  " 8: b8 65 00\n"
404  " 8: b8 64 00\n"
405  " 8: b8 06 02\n"
406  " 8: b8 26 00\n"
407  " 9: e9 00 40\n"
408  " 9: b9 7a 00\n"
409  " 9: b9 7d 00\n"
410  " 9: b9 7f 00\n"
411  " 9: b9 65 00\n"
412  " 9: b9 64 00\n"
413  " 9: b9 06 02\n"
414  " 9: b9 26 00\n"
415  " 10: ea 00 40\n"
416  " 10: ba 7a 00\n"
417  " 10: ba 7d 00\n"
418  " 10: ba 7f 00\n"
419  " 10: ba 65 00\n"
420  " 10: ba 64 00\n"
421  " 10: ba 06 02\n"
422  " 10: ba 26 00\n"
423  " 11: eb 00 40\n"
424  " 11: bb 7a 00\n"
425  " 11: bb 7d 00\n"
426  " 11: bb 7f 00\n"
427  " 11: bb 65 00\n"
428  " 11: bb 64 00\n"
429  " 11: bb 06 02\n"
430  " 11: bb 26 00\n"
431  " 12: ec 00 40\n"
432  " 12: bc 7a 00\n"
433  " 12: bc 7d 00\n"
434  " 12: bc 7f 00\n"
435  " 12: bc 65 00\n"
436  " 12: bc 64 00\n"
437  " 12: bc 06 02\n"
438  " 12: bc 26 00\n"
439  " 13: ed 00 40\n"
440  " 13: bd 7a 00\n"
441  " 13: bd 7d 00\n"
442  " 13: bd 7f 00\n"
443  " 13: bd 65 00\n"
444  " 13: bd 64 00\n"
445  " 13: bd 06 02\n"
446  " 13: bd 26 00\n"
447  " 14: ee 00 40\n"
448  " 14: be 7a 00\n"
449  " 14: be 7d 00\n"
450  " 14: be 7f 00\n"
451  " 14: be 65 00\n"
452  " 14: be 64 00\n"
453  " 14: be 06 02\n"
454  " 14: be 26 00\n"
455  " 15: ef 00 40\n"
456  " 15: bf 7a 00\n"
457  " 15: bf 7d 00\n"
458  " 15: bf 7f 00\n"
459  " 15: bf 65 00\n"
460  " 15: bf 64 00\n"
461  " 15: bf 06 02\n"
462  " 15: bf 26 00\n"), __LINE__, _T(__FILE__)) );
463 
464  /* check all permutations */
465 
466  DEBUGLOG(midiio,_T("123"));
467 
468  out->NoteOn(box,56,96,route.get(),0,cd);
469  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n"), __LINE__, _T(__FILE__)) );
470  out->NoteOn(box,60,97,route.get(),0,cd);
471  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__)) );
472  out->NoteOn(box,63,98,route.get(),0,cd);
473  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n"), __LINE__, _T(__FILE__)) );
474 
475  out->NoteOn(box,56,96,route.get(),0,cd);
476  CPPUNIT_ASSERT( out->Check(_T(" 3: 93 38 60\n"), __LINE__, _T(__FILE__)) );
477  out->NoteOn(box,60,97,route.get(),0,cd);
478  CPPUNIT_ASSERT( out->Check(_T(" 4: 94 3c 61\n"), __LINE__, _T(__FILE__)) );
479  out->NoteOn(box,63,98,route.get(),0,cd);
480  CPPUNIT_ASSERT( out->Check(_T(" 5: 95 3f 62\n"), __LINE__, _T(__FILE__)) );
481 
482  out->NoteOn(box,56,96,route.get(),0,cd);
483  CPPUNIT_ASSERT( out->Check(_T(" 6: 96 38 60\n"), __LINE__, _T(__FILE__)) );
484  out->NoteOn(box,60,97,route.get(),0,cd);
485  CPPUNIT_ASSERT( out->Check(_T(" 7: 97 3c 61\n"), __LINE__, _T(__FILE__)) );
486  out->NoteOn(box,63,98,route.get(),0,cd);
487  CPPUNIT_ASSERT( out->Check(_T(" 8: 98 3f 62\n"), __LINE__, _T(__FILE__)) );
488 
489  out->NoteOn(box,56,96,route.get(),0,cd);
490  CPPUNIT_ASSERT( out->Check(_T(" 10: 9a 38 60\n"), __LINE__, _T(__FILE__)) );
491  out->NoteOn(box,60,97,route.get(),0,cd);
492  CPPUNIT_ASSERT( out->Check(_T(" 11: 9b 3c 61\n"), __LINE__, _T(__FILE__)) );
493  out->NoteOn(box,63,98,route.get(),0,cd);
494  CPPUNIT_ASSERT( out->Check(_T(" 12: 9c 3f 62\n"), __LINE__, _T(__FILE__)) );
495 
496  out->NoteOn(box,56,96,route.get(),0,cd);
497  CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 38 60\n"), __LINE__, _T(__FILE__)) );
498  out->NoteOn(box,60,97,route.get(),0,cd);
499  CPPUNIT_ASSERT( out->Check(_T(" 14: 9e 3c 61\n"), __LINE__, _T(__FILE__)) );
500  out->NoteOn(box,63,98,route.get(),0,cd);
501  CPPUNIT_ASSERT( out->Check(_T(" 15: 9f 3f 62\n"), __LINE__, _T(__FILE__)) );
502 
503 
504  out->NoteOn(box,64,99,route.get(),0,cd);
505  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 40\n 0: 90 40 63\n"), __LINE__, _T(__FILE__)) );
506  out->NoteOn(box,65,100,route.get(),0,cd);
507  CPPUNIT_ASSERT( out->Check(_T(" 3: 83 38 40\n 3: 93 41 64\n"), __LINE__, _T(__FILE__)) );
508  out->NoteOn(box,66,101,route.get(),0,cd);
509  CPPUNIT_ASSERT( out->Check(_T(" 6: 86 38 40\n 6: 96 42 65\n"), __LINE__, _T(__FILE__)) );
510 
511  out->NoteOn(box,67,102,route.get(),0,cd);
512  CPPUNIT_ASSERT( out->Check(_T(" 10: 8a 38 40\n 10: 9a 43 66\n"), __LINE__, _T(__FILE__)) );
513  out->NoteOn(box,68,103,route.get(),0,cd);
514  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 40\n 1: 91 44 67\n"), __LINE__, _T(__FILE__)) );
515  out->NoteOn(box,69,104,route.get(),0,cd);
516  CPPUNIT_ASSERT( out->Check(_T(" 4: 84 3c 40\n 4: 94 45 68\n"), __LINE__, _T(__FILE__)) );
517 
518  out->NoteOn(box,70,105,route.get(),0,cd);
519  CPPUNIT_ASSERT( out->Check(_T(" 7: 87 3c 40\n 7: 97 46 69\n"), __LINE__, _T(__FILE__)) );
520  out->NoteOn(box,71,106,route.get(),0,cd);
521  CPPUNIT_ASSERT( out->Check(_T(" 11: 8b 3c 40\n 11: 9b 47 6a\n"), __LINE__, _T(__FILE__)) );
522  out->NoteOn(box,72,107,route.get(),0,cd);
523  CPPUNIT_ASSERT( out->Check(_T(" 14: 8e 3c 40\n 14: 9e 48 6b\n"), __LINE__, _T(__FILE__)) );
524 
525  out->NoteOn(box,73,108,route.get(),0,cd);
526  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 40\n 2: 92 49 6c\n"), __LINE__, _T(__FILE__)) );
527  out->NoteOn(box,74,109,route.get(),0,cd);
528  CPPUNIT_ASSERT( out->Check(_T(" 5: 85 3f 40\n 5: 95 4a 6d\n"), __LINE__, _T(__FILE__)) );
529  out->NoteOn(box,75,110,route.get(),0,cd);
530  CPPUNIT_ASSERT( out->Check(_T(" 8: 88 3f 40\n 8: 98 4b 6e\n"), __LINE__, _T(__FILE__)) );
531 
532  out->NoteOn(box,76,111,route.get(),0,cd);
533  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 40 40\n 0: 90 4c 6f\n"), __LINE__, _T(__FILE__)) );
534  out->NoteOn(box,77,112,route.get(),0,cd);
535  CPPUNIT_ASSERT( out->Check(_T(" 3: 83 41 40\n 3: 93 4d 70\n"), __LINE__, _T(__FILE__)) );
536  out->NoteOn(box,78,113,route.get(),0,cd);
537  CPPUNIT_ASSERT( out->Check(_T(" 6: 86 42 40\n 6: 96 4e 71\n"), __LINE__, _T(__FILE__)) );
538 
539  out->Close();
540  CPPUNIT_ASSERT( out->Check(_T(" 12: 8c 3f 40\n 13: 8d 38 40\n 15: 8f 3f 40\n 10: 8a 43 40\n 1: 81 44 40\n 4: 84 45 40\n 7: 87 46 40\n 11: 8b 47 40\n 14: 8e 48 40\n 2: 82 49 40\n 5: 85 4a 40\n 8: 88 4b 40\n 0: 80 4c 40\n 3: 83 4d 40\n 6: 86 4e 40\n...closed.\n"), __LINE__, _T(__FILE__)) );
541 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
mutabor::Route route
Definition: midicmnTest.h:132
midicmnOutputDevice * out
Definition: midicmnTest.h:131
mutabor::Box box
Definition: midicmnTest.h:133
mutabor::ChannelData cd
Definition: midicmnTest.h:134
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:821
void CommonMidiOutputTest::testNoteOnOff ( )

Definiert in Zeile 83 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, CommonMidiOutputTest::cd, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), DEBUGLOG, midicmnOutputDevice::getOut(), mutString, mutabor::OutputDeviceClass::NoteOff(), mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), CommonMidiOutputTest::out und CommonMidiOutputTest::route.

84 {
85  CPPUNIT_ASSERT( out );
86  CPPUNIT_ASSERT(out->Open());
87  if (!box->Compile(NULL, "")) {
88  CPPUNIT_FAIL((const char *)box->get_errors().ToUTF8());
89  }
90  CPPUNIT_ASSERT(box->Open());
91  CPPUNIT_ASSERT( out->Check(_T("Opened...\n"
92  " 0: e0 00 40\n"
93  " 0: b0 7a 00\n"
94  " 0: b0 7d 00\n"
95  " 0: b0 7f 00\n"
96  " 0: b0 65 00\n"
97  " 0: b0 64 00\n"
98  " 0: b0 06 02\n"
99  " 0: b0 26 00\n"
100  " 1: e1 00 40\n"
101  " 1: b1 7a 00\n"
102  " 1: b1 7d 00\n"
103  " 1: b1 7f 00\n"
104  " 1: b1 65 00\n"
105  " 1: b1 64 00\n"
106  " 1: b1 06 02\n"
107  " 1: b1 26 00\n"
108  " 2: e2 00 40\n"
109  " 2: b2 7a 00\n"
110  " 2: b2 7d 00\n"
111  " 2: b2 7f 00\n"
112  " 2: b2 65 00\n"
113  " 2: b2 64 00\n"
114  " 2: b2 06 02\n"
115  " 2: b2 26 00\n"
116  " 3: e3 00 40\n"
117  " 3: b3 7a 00\n"
118  " 3: b3 7d 00\n"
119  " 3: b3 7f 00\n"
120  " 3: b3 65 00\n"
121  " 3: b3 64 00\n"
122  " 3: b3 06 02\n"
123  " 3: b3 26 00\n"
124  " 4: e4 00 40\n"
125  " 4: b4 7a 00\n"
126  " 4: b4 7d 00\n"
127  " 4: b4 7f 00\n"
128  " 4: b4 65 00\n"
129  " 4: b4 64 00\n"
130  " 4: b4 06 02\n"
131  " 4: b4 26 00\n"
132  " 5: e5 00 40\n"
133  " 5: b5 7a 00\n"
134  " 5: b5 7d 00\n"
135  " 5: b5 7f 00\n"
136  " 5: b5 65 00\n"
137  " 5: b5 64 00\n"
138  " 5: b5 06 02\n"
139  " 5: b5 26 00\n"
140  " 6: e6 00 40\n"
141  " 6: b6 7a 00\n"
142  " 6: b6 7d 00\n"
143  " 6: b6 7f 00\n"
144  " 6: b6 65 00\n"
145  " 6: b6 64 00\n"
146  " 6: b6 06 02\n"
147  " 6: b6 26 00\n"
148  " 7: e7 00 40\n"
149  " 7: b7 7a 00\n"
150  " 7: b7 7d 00\n"
151  " 7: b7 7f 00\n"
152  " 7: b7 65 00\n"
153  " 7: b7 64 00\n"
154  " 7: b7 06 02\n"
155  " 7: b7 26 00\n"
156  " 8: e8 00 40\n"
157  " 8: b8 7a 00\n"
158  " 8: b8 7d 00\n"
159  " 8: b8 7f 00\n"
160  " 8: b8 65 00\n"
161  " 8: b8 64 00\n"
162  " 8: b8 06 02\n"
163  " 8: b8 26 00\n"
164  " 9: e9 00 40\n"
165  " 9: b9 7a 00\n"
166  " 9: b9 7d 00\n"
167  " 9: b9 7f 00\n"
168  " 9: b9 65 00\n"
169  " 9: b9 64 00\n"
170  " 9: b9 06 02\n"
171  " 9: b9 26 00\n"
172  " 10: ea 00 40\n"
173  " 10: ba 7a 00\n"
174  " 10: ba 7d 00\n"
175  " 10: ba 7f 00\n"
176  " 10: ba 65 00\n"
177  " 10: ba 64 00\n"
178  " 10: ba 06 02\n"
179  " 10: ba 26 00\n"
180  " 11: eb 00 40\n"
181  " 11: bb 7a 00\n"
182  " 11: bb 7d 00\n"
183  " 11: bb 7f 00\n"
184  " 11: bb 65 00\n"
185  " 11: bb 64 00\n"
186  " 11: bb 06 02\n"
187  " 11: bb 26 00\n"
188  " 12: ec 00 40\n"
189  " 12: bc 7a 00\n"
190  " 12: bc 7d 00\n"
191  " 12: bc 7f 00\n"
192  " 12: bc 65 00\n"
193  " 12: bc 64 00\n"
194  " 12: bc 06 02\n"
195  " 12: bc 26 00\n"
196  " 13: ed 00 40\n"
197  " 13: bd 7a 00\n"
198  " 13: bd 7d 00\n"
199  " 13: bd 7f 00\n"
200  " 13: bd 65 00\n"
201  " 13: bd 64 00\n"
202  " 13: bd 06 02\n"
203  " 13: bd 26 00\n"
204  " 14: ee 00 40\n"
205  " 14: be 7a 00\n"
206  " 14: be 7d 00\n"
207  " 14: be 7f 00\n"
208  " 14: be 65 00\n"
209  " 14: be 64 00\n"
210  " 14: be 06 02\n"
211  " 14: be 26 00\n"
212  " 15: ef 00 40\n"
213  " 15: bf 7a 00\n"
214  " 15: bf 7d 00\n"
215  " 15: bf 7f 00\n"
216  " 15: bf 65 00\n"
217  " 15: bf 64 00\n"
218  " 15: bf 06 02\n"
219  " 15: bf 26 00\n"), __LINE__, _T(__FILE__)) );
220 
221  /* check all permutations */
222 
223  DEBUGLOG(midiio,_T("123"));
224 
225  out->NoteOn(box,56,96,route.get(),0,cd);
226  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n"), __LINE__, _T(__FILE__) ) );
227  out->NoteOn(box,60,97,route.get(),0,cd);
228  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
229  out->NoteOn(box,63,98,route.get(),0,cd);
230  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n"), __LINE__, _T(__FILE__) ) );
231 
232  out->NoteOff(box,56,53,route.get(),0,false);
233  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n"), __LINE__, _T(__FILE__)) );
234  out->NoteOff(box,60,54,route.get(),0,false);
235  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__)) );
236  out->NoteOff(box,63,55,route.get(),0,false);
237  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n"), __LINE__, _T(__FILE__)) );
238 
239  DEBUGLOG(midiio,_T("132"));
240 
241  out->NoteOn(box,56,96,route.get(),0,cd);
242  CPPUNIT_ASSERT( out->Check(_T(" 3: 93 38 60\n"), __LINE__, _T(__FILE__) ) );
243  out->NoteOn(box,60,97,route.get(),0,cd);
244  CPPUNIT_ASSERT( out->Check(_T(" 4: 94 3c 61\n"), __LINE__, _T(__FILE__) ) );
245  out->NoteOn(box,63,98,route.get(),0,cd);
246  CPPUNIT_ASSERT( out->Check(_T(" 5: 95 3f 62\n"), __LINE__, _T(__FILE__) ) );
247 
248  out->NoteOff(box,56,53,route.get(),0,false);
249  CPPUNIT_ASSERT( out->Check(_T(" 3: 83 38 35\n"), __LINE__, _T(__FILE__)) );
250  out->NoteOff(box,63,55,route.get(),0,false);
251  CPPUNIT_ASSERT( out->Check(_T(" 5: 85 3f 37\n"), __LINE__, _T(__FILE__)) );
252  out->NoteOff(box,60,54,route.get(),0,false);
253  CPPUNIT_ASSERT( out->Check(_T(" 4: 84 3c 36\n"), __LINE__, _T(__FILE__)) );
254 
255  DEBUGLOG(midiio,_T("213"));
256 
257  out->NoteOn(box,56,96,route.get(),0,cd);
258  CPPUNIT_ASSERT( out->Check(_T(" 6: 96 38 60\n"), __LINE__, _T(__FILE__) ) );
259  out->NoteOn(box,60,97,route.get(),0,cd);
260  CPPUNIT_ASSERT( out->Check(_T(" 7: 97 3c 61\n"), __LINE__, _T(__FILE__) ) );
261  out->NoteOn(box,63,98,route.get(),0,cd);
262  CPPUNIT_ASSERT( out->Check(_T(" 8: 98 3f 62\n"), __LINE__, _T(__FILE__) ) );
263 
264  out->NoteOff(box,60,54,route.get(),0,false);
265  CPPUNIT_ASSERT( out->Check(_T(" 7: 87 3c 36\n"), __LINE__, _T(__FILE__)) );
266  out->NoteOff(box,56,53,route.get(),0,false);
267  CPPUNIT_ASSERT( out->Check(_T(" 6: 86 38 35\n"), __LINE__, _T(__FILE__)) );
268  out->NoteOff(box,63,55,route.get(),0,false);
269  CPPUNIT_ASSERT( out->Check(_T(" 8: 88 3f 37\n"), __LINE__, _T(__FILE__)) );
270 
271  DEBUGLOG(midiio,_T("231"));
272 
273  out->NoteOn(box,56,96,route.get(),0,cd);
274  CPPUNIT_ASSERT( out->Check(_T(" 10: 9a 38 60\n"), __LINE__, _T(__FILE__) ) );
275  out->NoteOn(box,60,97,route.get(),0,cd);
276  CPPUNIT_ASSERT( out->Check(_T(" 11: 9b 3c 61\n"), __LINE__, _T(__FILE__) ) );
277  out->NoteOn(box,63,98,route.get(),0,cd);
278  CPPUNIT_ASSERT( out->Check(_T(" 12: 9c 3f 62\n"), __LINE__, _T(__FILE__) ) );
279 
280  out->NoteOff(box,60,54,route.get(),0,false);
281  CPPUNIT_ASSERT( out->Check(_T(" 11: 8b 3c 36\n"), __LINE__, _T(__FILE__)) );
282  out->NoteOff(box,63,55,route.get(),0,false);
283  CPPUNIT_ASSERT( out->Check(_T(" 12: 8c 3f 37\n"), __LINE__, _T(__FILE__)) );
284  out->NoteOff(box,56,53,route.get(),0,false);
285  CPPUNIT_ASSERT( out->Check(_T(" 10: 8a 38 35\n"), __LINE__, _T(__FILE__)) );
286 
287  DEBUGLOG(midiio,_T("312"));
288 
289  out->NoteOn(box,56,96,route.get(),0,cd);
290  CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 38 60\n"), __LINE__, _T(__FILE__) ) );
291  out->NoteOn(box,60,97,route.get(),0,cd);
292  CPPUNIT_ASSERT( out->Check(_T(" 14: 9e 3c 61\n"), __LINE__, _T(__FILE__) ) );
293  out->NoteOn(box,63,98,route.get(),0,cd);
294  CPPUNIT_ASSERT( out->Check(_T(" 15: 9f 3f 62\n"), __LINE__, _T(__FILE__) ) );
295 
296  out->NoteOff(box,63,55,route.get(),0,false);
297  CPPUNIT_ASSERT( out->Check(_T(" 15: 8f 3f 37\n"), __LINE__, _T(__FILE__)) );
298  // check sending note on with velocity = 0
299  out->NoteOff(box,56,53,route.get(),0,true);
300  CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 38 00\n"), __LINE__, _T(__FILE__)) );
301  out->NoteOff(box,60,54,route.get(),0,false);
302  CPPUNIT_ASSERT( out->Check(_T(" 14: 8e 3c 36\n"), __LINE__, _T(__FILE__)) );
303 
304  DEBUGLOG(midiio,_T("321"));
305 
306  // Add check for NULL as tone system parameter
307  out->NoteOn(NULL,56,96,route.get(),0,cd);
308  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n"), __LINE__, _T(__FILE__) ) );
309  out->NoteOn(NULL,60,97,route.get(),0,cd);
310  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
311  out->NoteOn(NULL,63,98,route.get(),0,cd);
312  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n"), __LINE__, _T(__FILE__) ) );
313 
314  out->NoteOff(NULL,63,55,route.get(),0,false);
315  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n"), __LINE__, _T(__FILE__)) );
316  out->NoteOff(NULL,60,54,route.get(),0,false);
317  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__)) );
318  out->NoteOff(NULL,56,53,route.get(),0,false);
319  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n"), __LINE__, _T(__FILE__)) );
320 
321 
322 
323 
324  out->Close();
325  DEBUGLOG(midiio,_T("|%s|"),((mutString)(out->getOut())).c_str());
326  CPPUNIT_ASSERT( out->Check(_T("...closed.\n")) );
327 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
Definition: Device.h:831
mutabor::Route route
Definition: midicmnTest.h:132
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:77
midicmnOutputDevice * out
Definition: midicmnTest.h:131
mutabor::Box box
Definition: midicmnTest.h:133
#define mutString
Definition: Defs.h:84
mutabor::ChannelData cd
Definition: midicmnTest.h:134
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:821
void OutputMidiFileTest::testNoteOnOff ( )

Definiert in Zeile 4615 der Datei DevMidFTest.cpp.

Benutzt OutputMidiFileTest::box, OutputMidiFileTest::cd, mutabor::OutputMidiFile::Close(), DEBUGLOG, mutabor::OutputDeviceClass::NoteOff(), mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), OutputMidiFileTest::out und OutputMidiFileTest::route.

4616 {
4617  CPPUNIT_ASSERT( out );
4618  out->Open();
4619 /*
4620  CPPUNIT_ASSERT( out->Check(_T("Opened...\n"
4621  " 0: e0 00 40\n"
4622  " 0: b0 7a 00\n"
4623  " 0: b0 7d 00\n"
4624  " 0: b0 7f 00\n"
4625  " 1: e1 00 40\n"
4626  " 1: b1 7a 00\n"
4627  " 1: b1 7d 00\n"
4628  " 1: b1 7f 00\n"
4629  " 2: e2 00 40\n"
4630  " 2: b2 7a 00\n"
4631  " 2: b2 7d 00\n"
4632  " 2: b2 7f 00\n"
4633  " 3: e3 00 40\n"
4634  " 3: b3 7a 00\n"
4635  " 3: b3 7d 00\n"
4636  " 3: b3 7f 00\n"
4637  " 4: e4 00 40\n"
4638  " 4: b4 7a 00\n"
4639  " 4: b4 7d 00\n"
4640  " 4: b4 7f 00\n"
4641  " 5: e5 00 40\n"
4642  " 5: b5 7a 00\n"
4643  " 5: b5 7d 00\n"
4644  " 5: b5 7f 00\n"
4645  " 6: e6 00 40\n"
4646  " 6: b6 7a 00\n"
4647  " 6: b6 7d 00\n"
4648  " 6: b6 7f 00\n"
4649  " 7: e7 00 40\n"
4650  " 7: b7 7a 00\n"
4651  " 7: b7 7d 00\n"
4652  " 7: b7 7f 00\n"
4653  " 8: e8 00 40\n"
4654  " 8: b8 7a 00\n"
4655  " 8: b8 7d 00\n"
4656  " 8: b8 7f 00\n"
4657  " 9: e9 00 40\n"
4658  " 9: b9 7a 00\n"
4659  " 9: b9 7d 00\n"
4660  " 9: b9 7f 00\n"
4661  " 10: ea 00 40\n"
4662  " 10: ba 7a 00\n"
4663  " 10: ba 7d 00\n"
4664  " 10: ba 7f 00\n"
4665  " 11: eb 00 40\n"
4666  " 11: bb 7a 00\n"
4667  " 11: bb 7d 00\n"
4668  " 11: bb 7f 00\n"
4669  " 12: ec 00 40\n"
4670  " 12: bc 7a 00\n"
4671  " 12: bc 7d 00\n"
4672  " 12: bc 7f 00\n"
4673  " 13: ed 00 40\n"
4674  " 13: bd 7a 00\n"
4675  " 13: bd 7d 00\n"
4676  " 13: bd 7f 00\n"
4677  " 14: ee 00 40\n"
4678  " 14: be 7a 00\n"
4679  " 14: be 7d 00\n"
4680  " 14: be 7f 00\n"
4681  " 15: ef 00 40\n"
4682  " 15: bf 7a 00\n"
4683  " 15: bf 7d 00\n"
4684  " 15: bf 7f 00\n")) );
4685 */
4686  /* check all permutations */
4687 
4688  DEBUGLOG(midiio,_T("123"));
4689 
4690  out->NoteOn(box,56,96,route.get(),0,cd);
4691 // CPPUNIT_ASSERT( out->Check(_T(" 0: b0 40 00\n 0: 90 38 60\n") ) );
4692  out->NoteOn(box,60,97,route.get(),0,cd);
4693 // CPPUNIT_ASSERT( out->Check(_T(" 1: b1 40 00\n 1: 91 3c 61\n") ) );
4694  out->NoteOn(box,63,98,route.get(),0,cd);
4695 // CPPUNIT_ASSERT( out->Check(_T(" 2: b2 40 00\n 2: 92 3f 62\n") ) );
4696 
4697  usleep(200000);
4698  out->NoteOff(box,56,53,route.get(),0,false);
4699 // CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n")) );
4700  out->NoteOff(box,60,54,route.get(),0,false);
4701 // CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n")) );
4702  out->NoteOff(box,63,55,route.get(),0,false);
4703 // CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n")) );
4704 
4705  usleep(200000);
4706  DEBUGLOG(midiio,_T("132"));
4707 
4708  out->NoteOn(box,56,96,route.get(),0,cd);
4709 // CPPUNIT_ASSERT( out->Check(_T(" 3: b3 40 00\n 3: 93 38 60\n") ) );
4710  out->NoteOn(box,60,97,route.get(),0,cd);
4711 // CPPUNIT_ASSERT( out->Check(_T(" 4: b4 40 00\n 4: 94 3c 61\n") ) );
4712  out->NoteOn(box,63,98,route.get(),0,cd);
4713 // CPPUNIT_ASSERT( out->Check(_T(" 5: b5 40 00\n 5: 95 3f 62\n") ) );
4714 
4715  usleep(200000);
4716  out->NoteOff(box,56,53,route.get(),0,false);
4717 // CPPUNIT_ASSERT( out->Check(_T(" 3: 83 38 35\n")) );
4718  out->NoteOff(box,63,55,route.get(),0,false);
4719 // CPPUNIT_ASSERT( out->Check(_T(" 5: 85 3f 37\n")) );
4720  out->NoteOff(box,60,54,route.get(),0,false);
4721 // CPPUNIT_ASSERT( out->Check(_T(" 4: 84 3c 36\n")) );
4722 
4723  DEBUGLOG(midiio,_T("213"));
4724 
4725  usleep(200000);
4726  out->NoteOn(box,56,96,route.get(),0,cd);
4727 // CPPUNIT_ASSERT( out->Check(_T(" 6: b6 40 00\n 6: 96 38 60\n") ) );
4728  out->NoteOn(box,60,97,route.get(),0,cd);
4729 // CPPUNIT_ASSERT( out->Check(_T(" 7: b7 40 00\n 7: 97 3c 61\n") ) );
4730  out->NoteOn(box,63,98,route.get(),0,cd);
4731 // CPPUNIT_ASSERT( out->Check(_T(" 8: b8 40 00\n 8: 98 3f 62\n") ) );
4732 
4733  out->NoteOff(box,60,54,route.get(),0,false);
4734 // CPPUNIT_ASSERT( out->Check(_T(" 7: 87 3c 36\n")) );
4735  out->NoteOff(box,56,53,route.get(),0,false);
4736 // CPPUNIT_ASSERT( out->Check(_T(" 6: 86 38 35\n")) );
4737  out->NoteOff(box,63,55,route.get(),0,false);
4738 // CPPUNIT_ASSERT( out->Check(_T(" 8: 88 3f 37\n")) );
4739 
4740  usleep(200000);
4741  DEBUGLOG(midiio,_T("231"));
4742 
4743  out->NoteOn(box,56,96,route.get(),0,cd);
4744 // CPPUNIT_ASSERT( out->Check(_T(" 10: ba 40 00\n 10: 9a 38 60\n") ) );
4745  out->NoteOn(box,60,97,route.get(),0,cd);
4746 // CPPUNIT_ASSERT( out->Check(_T(" 11: bb 40 00\n 11: 9b 3c 61\n") ) );
4747  out->NoteOn(box,63,98,route.get(),0,cd);
4748 // CPPUNIT_ASSERT( out->Check(_T(" 12: bc 40 00\n 12: 9c 3f 62\n") ) );
4749 
4750  usleep(200000);
4751  out->NoteOff(box,60,54,route.get(),0,false);
4752 // CPPUNIT_ASSERT( out->Check(_T(" 11: 8b 3c 36\n")) );
4753  out->NoteOff(box,63,55,route.get(),0,false);
4754 // CPPUNIT_ASSERT( out->Check(_T(" 12: 8c 3f 37\n")) );
4755  out->NoteOff(box,56,53,route.get(),0,false);
4756 // CPPUNIT_ASSERT( out->Check(_T(" 10: 8a 38 35\n")) );
4757 
4758  usleep(200000);
4759  DEBUGLOG(midiio,_T("312"));
4760 
4761  out->NoteOn(box,56,96,route.get(),0,cd);
4762 // CPPUNIT_ASSERT( out->Check(_T(" 13: bd 40 00\n 13: 9d 38 60\n") ) );
4763  out->NoteOn(box,60,97,route.get(),0,cd);
4764 // CPPUNIT_ASSERT( out->Check(_T(" 14: be 40 00\n 14: 9e 3c 61\n") ) );
4765  out->NoteOn(box,63,98,route.get(),0,cd);
4766 // CPPUNIT_ASSERT( out->Check(_T(" 15: bf 40 00\n 15: 9f 3f 62\n") ) );
4767 
4768  usleep(200000);
4769  out->NoteOff(box,63,55,route.get(),0,false);
4770 // CPPUNIT_ASSERT( out->Check(_T(" 15: 8f 3f 37\n")) );
4771  // check sending note on with velocity = 0
4772  out->NoteOff(box,56,53,route.get(),0,true);
4773 // CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 38 00\n")) );
4774  out->NoteOff(box,60,54,route.get(),0,false);
4775 // CPPUNIT_ASSERT( out->Check(_T(" 14: 8e 3c 36\n")) );
4776 
4777  usleep(200000);
4778  DEBUGLOG(midiio,_T("321"));
4779 
4780  // Add check for NULL as tone system parameter
4781  out->NoteOn(NULL,56,96,route.get(),0,cd);
4782 // CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n") ) );
4783  out->NoteOn(NULL,60,97,route.get(),0,cd);
4784 // CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n") ) );
4785  out->NoteOn(NULL,63,98,route.get(),0,cd);
4786 // CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n") ) );
4787 
4788  usleep(200000);
4789  out->NoteOff(NULL,63,55,route.get(),0,false);
4790 // CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n")) );
4791  out->NoteOff(NULL,60,54,route.get(),0,false);
4792 // CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n")) );
4793  out->NoteOff(NULL,56,53,route.get(),0,false);
4794 // CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n")) );
4795 
4796 
4797 
4798 
4799  out->Close();
4800 // DEBUGLOG(midiio,_T("|%s|"),((mutString)(out->getOut())).c_str());
4801 // CPPUNIT_ASSERT( out->Check(_T("...closed.\n")) );
4802 }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
Definition: Device.h:831
virtual void Close()
Definition: DevMidF.cpp:336
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:229
mutabor::Route route
Definition: DevMidFTest.h:230
mutabor::ChannelData cd
Definition: DevMidFTest.h:232
mutabor::Box box
Definition: DevMidFTest.h:231
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:821
void CommonMidiInputTest::testPanic ( )

Definiert in Zeile 599 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::InputDeviceClass::Close(), DEBUGLOG, DEFAULT_PANIC, midicmnOutputDevice::getOut(), CommonMidiInputTest::in, mutString, midicmnInputDevice::NoteOff(), midicmnInputDevice::NoteOn(), midicmnInputDevice::Open(), mutabor::OutputDeviceClass::Open(), CommonMidiInputTest::out und mutabor::InputDeviceClass::Panic().

600 {
601  CPPUNIT_ASSERT( in );
602  out->Open();
603  box->Open();
604  CPPUNIT_ASSERT( out->Check(_T("Opened...\n"
605  " 0: e0 00 40\n"
606  " 0: b0 7a 00\n"
607  " 0: b0 7d 00\n"
608  " 0: b0 7f 00\n"
609  " 0: b0 65 00\n"
610  " 0: b0 64 00\n"
611  " 0: b0 06 02\n"
612  " 0: b0 26 00\n"
613  " 1: e1 00 40\n"
614  " 1: b1 7a 00\n"
615  " 1: b1 7d 00\n"
616  " 1: b1 7f 00\n"
617  " 1: b1 65 00\n"
618  " 1: b1 64 00\n"
619  " 1: b1 06 02\n"
620  " 1: b1 26 00\n"
621  " 2: e2 00 40\n"
622  " 2: b2 7a 00\n"
623  " 2: b2 7d 00\n"
624  " 2: b2 7f 00\n"
625  " 2: b2 65 00\n"
626  " 2: b2 64 00\n"
627  " 2: b2 06 02\n"
628  " 2: b2 26 00\n"
629  " 3: e3 00 40\n"
630  " 3: b3 7a 00\n"
631  " 3: b3 7d 00\n"
632  " 3: b3 7f 00\n"
633  " 3: b3 65 00\n"
634  " 3: b3 64 00\n"
635  " 3: b3 06 02\n"
636  " 3: b3 26 00\n"
637  " 4: e4 00 40\n"
638  " 4: b4 7a 00\n"
639  " 4: b4 7d 00\n"
640  " 4: b4 7f 00\n"
641  " 4: b4 65 00\n"
642  " 4: b4 64 00\n"
643  " 4: b4 06 02\n"
644  " 4: b4 26 00\n"
645  " 5: e5 00 40\n"
646  " 5: b5 7a 00\n"
647  " 5: b5 7d 00\n"
648  " 5: b5 7f 00\n"
649  " 5: b5 65 00\n"
650  " 5: b5 64 00\n"
651  " 5: b5 06 02\n"
652  " 5: b5 26 00\n"
653  " 6: e6 00 40\n"
654  " 6: b6 7a 00\n"
655  " 6: b6 7d 00\n"
656  " 6: b6 7f 00\n"
657  " 6: b6 65 00\n"
658  " 6: b6 64 00\n"
659  " 6: b6 06 02\n"
660  " 6: b6 26 00\n"
661  " 7: e7 00 40\n"
662  " 7: b7 7a 00\n"
663  " 7: b7 7d 00\n"
664  " 7: b7 7f 00\n"
665  " 7: b7 65 00\n"
666  " 7: b7 64 00\n"
667  " 7: b7 06 02\n"
668  " 7: b7 26 00\n"
669  " 8: e8 00 40\n"
670  " 8: b8 7a 00\n"
671  " 8: b8 7d 00\n"
672  " 8: b8 7f 00\n"
673  " 8: b8 65 00\n"
674  " 8: b8 64 00\n"
675  " 8: b8 06 02\n"
676  " 8: b8 26 00\n"
677  " 9: e9 00 40\n"
678  " 9: b9 7a 00\n"
679  " 9: b9 7d 00\n"
680  " 9: b9 7f 00\n"
681  " 9: b9 65 00\n"
682  " 9: b9 64 00\n"
683  " 9: b9 06 02\n"
684  " 9: b9 26 00\n"
685  " 10: ea 00 40\n"
686  " 10: ba 7a 00\n"
687  " 10: ba 7d 00\n"
688  " 10: ba 7f 00\n"
689  " 10: ba 65 00\n"
690  " 10: ba 64 00\n"
691  " 10: ba 06 02\n"
692  " 10: ba 26 00\n"
693  " 11: eb 00 40\n"
694  " 11: bb 7a 00\n"
695  " 11: bb 7d 00\n"
696  " 11: bb 7f 00\n"
697  " 11: bb 65 00\n"
698  " 11: bb 64 00\n"
699  " 11: bb 06 02\n"
700  " 11: bb 26 00\n"
701  " 12: ec 00 40\n"
702  " 12: bc 7a 00\n"
703  " 12: bc 7d 00\n"
704  " 12: bc 7f 00\n"
705  " 12: bc 65 00\n"
706  " 12: bc 64 00\n"
707  " 12: bc 06 02\n"
708  " 12: bc 26 00\n"
709  " 13: ed 00 40\n"
710  " 13: bd 7a 00\n"
711  " 13: bd 7d 00\n"
712  " 13: bd 7f 00\n"
713  " 13: bd 65 00\n"
714  " 13: bd 64 00\n"
715  " 13: bd 06 02\n"
716  " 13: bd 26 00\n"
717  " 14: ee 00 40\n"
718  " 14: be 7a 00\n"
719  " 14: be 7d 00\n"
720  " 14: be 7f 00\n"
721  " 14: be 65 00\n"
722  " 14: be 64 00\n"
723  " 14: be 06 02\n"
724  " 14: be 26 00\n"
725  " 15: ef 00 40\n"
726  " 15: bf 7a 00\n"
727  " 15: bf 7d 00\n"
728  " 15: bf 7f 00\n"
729  " 15: bf 65 00\n"
730  " 15: bf 64 00\n"
731  " 15: bf 06 02\n"
732  " 15: bf 26 00\n"), __LINE__, _T(__FILE__)) );
733  in->Open();
734 
735  /* check all permutations */
736 
737  DEBUGLOG(midiio,_T("123"));
738 
739  in->NoteOn(0,56,96);
740  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n"), __LINE__, _T(__FILE__) ) );
741  in->NoteOn(0,60,97);
742  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
743  in->NoteOn(0,63,98);
744  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n"), __LINE__, _T(__FILE__) ) );
745 
746  in->NoteOff(0,56,53);
747  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n"), __LINE__, _T(__FILE__) ) );
748  in->NoteOff(0,60,54);
749  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__) ) );
750  in->NoteOff(0,63,55);
751  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n"), __LINE__, _T(__FILE__) ) );
752 
753  DEBUGLOG(midiio,_T("132"));
754 
755  in->NoteOn(0,56,96);
756  CPPUNIT_ASSERT( out->Check(_T(" 3: 93 38 60\n"), __LINE__, _T(__FILE__) ) );
757  in->NoteOn(0,60,97);
758  CPPUNIT_ASSERT( out->Check(_T(" 4: 94 3c 61\n"), __LINE__, _T(__FILE__) ) );
759  in->NoteOn(0,63,98);
760  CPPUNIT_ASSERT( out->Check(_T(" 5: 95 3f 62\n"), __LINE__, _T(__FILE__) ) );
761 
762  in->NoteOff(0,56,53);
763  CPPUNIT_ASSERT( out->Check(_T(" 3: 83 38 35\n"), __LINE__, _T(__FILE__) ) );
764  in->NoteOff(0,63,55);
765  CPPUNIT_ASSERT( out->Check(_T(" 5: 85 3f 37\n"), __LINE__, _T(__FILE__) ) );
766  in->NoteOff(0,60,54);
767  CPPUNIT_ASSERT( out->Check(_T(" 4: 84 3c 36\n"), __LINE__, _T(__FILE__) ) );
768 
769  DEBUGLOG(midiio,_T("213"));
770 
771  in->NoteOn(0,56,96);
772  CPPUNIT_ASSERT( out->Check(_T(" 6: 96 38 60\n"), __LINE__, _T(__FILE__) ) );
773  in->NoteOn(0,60,97);
774  CPPUNIT_ASSERT( out->Check(_T(" 7: 97 3c 61\n"), __LINE__, _T(__FILE__) ) );
775  in->NoteOn(0,63,98);
776  CPPUNIT_ASSERT( out->Check(_T(" 8: 98 3f 62\n"), __LINE__, _T(__FILE__) ) );
777 
778  in->NoteOff(0,60,54);
779  CPPUNIT_ASSERT( out->Check(_T(" 7: 87 3c 36\n"), __LINE__, _T(__FILE__) ) );
780  in->NoteOff(0,56,53);
781  CPPUNIT_ASSERT( out->Check(_T(" 6: 86 38 35\n"), __LINE__, _T(__FILE__) ) );
782  in->NoteOff(0,63,55);
783  CPPUNIT_ASSERT( out->Check(_T(" 8: 88 3f 37\n"), __LINE__, _T(__FILE__) ) );
784 
785  DEBUGLOG(midiio,_T("231"));
786 
787  in->NoteOn(0,56,96);
788  CPPUNIT_ASSERT( out->Check(_T(" 10: 9a 38 60\n"), __LINE__, _T(__FILE__) ) );
789  in->NoteOn(0,60,97);
790  CPPUNIT_ASSERT( out->Check(_T(" 11: 9b 3c 61\n"), __LINE__, _T(__FILE__) ) );
791  in->NoteOn(0,63,98);
792  CPPUNIT_ASSERT( out->Check(_T(" 12: 9c 3f 62\n"), __LINE__, _T(__FILE__) ) );
793 
794  in->NoteOff(0,60,54);
795  CPPUNIT_ASSERT( out->Check(_T(" 11: 8b 3c 36\n"), __LINE__, _T(__FILE__) ) );
796  in->NoteOff(0,63,55);
797  CPPUNIT_ASSERT( out->Check(_T(" 12: 8c 3f 37\n"), __LINE__, _T(__FILE__) ) );
798  in->NoteOff(0,56,53);
799  CPPUNIT_ASSERT( out->Check(_T(" 10: 8a 38 35\n"), __LINE__, _T(__FILE__) ) );
800 
801  DEBUGLOG(midiio,_T("312"));
802 
803  in->NoteOn(0,56,96);
804  CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 38 60\n"), __LINE__, _T(__FILE__) ) );
805  in->NoteOn(0,60,97);
806  CPPUNIT_ASSERT( out->Check(_T(" 14: 9e 3c 61\n"), __LINE__, _T(__FILE__) ) );
807  in->NoteOn(0,63,98);
808  CPPUNIT_ASSERT( out->Check(_T(" 15: 9f 3f 62\n"), __LINE__, _T(__FILE__) ) );
809 
810  in->NoteOff(0,63,55);
811  CPPUNIT_ASSERT( out->Check(_T(" 15: 8f 3f 37\n"), __LINE__, _T(__FILE__) ) );
812  // check sending note on with velocity = 0
813  in->NoteOff(0,56,53);
814  CPPUNIT_ASSERT( out->Check(_T(" 13: 8d 38 35\n"), __LINE__, _T(__FILE__) ) );
815  in->NoteOff(0,60,54);
816  CPPUNIT_ASSERT( out->Check(_T(" 14: 8e 3c 36\n"), __LINE__, _T(__FILE__) ) );
817 
818  DEBUGLOG(midiio,_T("321"));
819 
820  // Add check for NULL as tone system parameter
821  in->NoteOn(0,56,96);
822  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 38 60\n"), __LINE__, _T(__FILE__) ) );
823  in->NoteOn(0,60,97);
824  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
825  in->NoteOn(0,63,98);
826  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 3f 62\n"), __LINE__, _T(__FILE__) ) );
827 
828  in->NoteOff(0,63,55);
829  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 3f 37\n"), __LINE__, _T(__FILE__) ) );
830  in->NoteOff(0,60,54);
831  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__) ) );
832  in->NoteOff(0,56,53);
833  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 38 35\n"), __LINE__, _T(__FILE__) ) );
834 
835  // now collect data
836  DEBUGLOG(midiio,_T("123"));
837  in->NoteOn(0,56,96);
838  CPPUNIT_ASSERT( out->Check(_T(" 3: 93 38 60\n"), __LINE__, _T(__FILE__) ) );
839  in->NoteOn(0,60,97);
840  CPPUNIT_ASSERT( out->Check(_T(" 5: 95 3c 61\n"), __LINE__, _T(__FILE__) ) );
841  in->NoteOn(0,63,98);
842  CPPUNIT_ASSERT( out->Check(_T(" 4: 94 3f 62\n"), __LINE__, _T(__FILE__) ) );
843 
844  DEBUGLOG(midiio,_T("132"));
845 
846  in->NoteOn(0,56,96);
847  CPPUNIT_ASSERT( out->Check(_T(" 7: 97 38 60\n"), __LINE__, _T(__FILE__) ) );
848  in->NoteOn(0,60,97);
849  CPPUNIT_ASSERT( out->Check(_T(" 6: 96 3c 61\n"), __LINE__, _T(__FILE__) ) );
850  in->NoteOn(0,63,98);
851  CPPUNIT_ASSERT( out->Check(_T(" 8: 98 3f 62\n"), __LINE__, _T(__FILE__) ) );
852 
853  DEBUGLOG(midiio,_T("213"));
854 
855  in->NoteOn(0,56,96);
856  CPPUNIT_ASSERT( out->Check(_T(" 11: 9b 38 60\n"), __LINE__, _T(__FILE__) ) );
857  in->NoteOn(0,60,97);
858  CPPUNIT_ASSERT( out->Check(_T(" 12: 9c 3c 61\n"), __LINE__, _T(__FILE__) ) );
859  in->NoteOn(0,63,98);
860  CPPUNIT_ASSERT( out->Check(_T(" 10: 9a 3f 62\n"), __LINE__, _T(__FILE__) ) );
861 
862  DEBUGLOG(midiio,_T("231"));
863 
864  in->NoteOn(0,56,96);
865  CPPUNIT_ASSERT( out->Check(_T(" 15: 9f 38 60\n"), __LINE__, _T(__FILE__) ) );
866  in->NoteOn(0,60,97);
867  CPPUNIT_ASSERT( out->Check(_T(" 13: 9d 3c 61\n"), __LINE__, _T(__FILE__) ) );
868  in->NoteOn(0,63,98);
869  CPPUNIT_ASSERT( out->Check(_T(" 14: 9e 3f 62\n"), __LINE__, _T(__FILE__) ) );
870 
871  DEBUGLOG(midiio,_T("312"));
872 
873  in->NoteOn(0,56,96);
874  CPPUNIT_ASSERT( out->Check(_T(" 2: 92 38 60\n"), __LINE__, _T(__FILE__) ) );
875  in->NoteOn(0,60,97);
876  CPPUNIT_ASSERT( out->Check(_T(" 1: 91 3c 61\n"), __LINE__, _T(__FILE__) ) );
877  in->NoteOn(0,63,98);
878  CPPUNIT_ASSERT( out->Check(_T(" 0: 90 3f 62\n"), __LINE__, _T(__FILE__) ) );
879 
880  DEBUGLOG(midiio,_T("321"));
881 
882  // Add check for NULL as tone system parameter
883  in->NoteOn(0,56,96);
884  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 38 40\n 2: 92 38 60\n"), __LINE__, _T(__FILE__) ) );
885  in->NoteOn(0,60,97);
886  CPPUNIT_ASSERT( out->Check(_T(" 2: 82 38 40\n 2: 92 3c 61\n"), __LINE__, _T(__FILE__) ) );
887  in->NoteOn(0,63,98);
888  CPPUNIT_ASSERT( out->Check(_T(" 3: 83 38 40\n 3: 93 3f 62\n"), __LINE__, _T(__FILE__) ) );
889 
890  in->NoteOff(0,56,53);
891  CPPUNIT_ASSERT( out->Check(_T(" 7: 87 38 35\n"), __LINE__, _T(__FILE__) ) );
892  in->NoteOff(0,60,54);
893  CPPUNIT_ASSERT( out->Check(_T(" 1: 81 3c 36\n"), __LINE__, _T(__FILE__) ) );
894  in->NoteOff(0,63,55);
895  CPPUNIT_ASSERT( out->Check(_T(" 0: 80 3f 37\n"), __LINE__, _T(__FILE__) ) );
896 
898  CPPUNIT_ASSERT( out->Check(_T("\
899  2: b2 40 00\n\
900  3: b3 40 00\n\
901  4: b4 40 00\n\
902  5: b5 40 00\n\
903  6: b6 40 00\n\
904  8: b8 40 00\n\
905  10: ba 40 00\n\
906  11: bb 40 00\n\
907  12: bc 40 00\n\
908  13: bd 40 00\n\
909  14: be 40 00\n\
910  15: bf 40 00\n\
911  2: b2 42 00\n\
912  3: b3 42 00\n\
913  4: b4 42 00\n\
914  5: b5 42 00\n\
915  6: b6 42 00\n\
916  8: b8 42 00\n\
917  10: ba 42 00\n\
918  11: bb 42 00\n\
919  12: bc 42 00\n\
920  13: bd 42 00\n\
921  14: be 42 00\n\
922  15: bf 42 00\n\
923  2: b2 44 00\n\
924  3: b3 44 00\n\
925  4: b4 44 00\n\
926  5: b5 44 00\n\
927  6: b6 44 00\n\
928  8: b8 44 00\n\
929  10: ba 44 00\n\
930  11: bb 44 00\n\
931  12: bc 44 00\n\
932  13: bd 44 00\n\
933  14: be 44 00\n\
934  15: bf 44 00\n\
935  2: b2 45 00\n\
936  3: b3 45 00\n\
937  4: b4 45 00\n\
938  5: b5 45 00\n\
939  6: b6 45 00\n\
940  8: b8 45 00\n\
941  10: ba 45 00\n\
942  11: bb 45 00\n\
943  12: bc 45 00\n\
944  13: bd 45 00\n\
945  14: be 45 00\n\
946  15: bf 45 00\n\
947  3: 83 3f 62\n\
948  4: 84 3f 62\n\
949  8: 88 3f 62\n\
950  10: 8a 3f 62\n\
951  14: 8e 3f 62\n\
952  2: 82 3c 61\n\
953  5: 85 3c 61\n\
954  6: 86 3c 61\n\
955  12: 8c 3c 61\n\
956  13: 8d 3c 61\n\
957  11: 8b 38 60\n\
958  15: 8f 38 60\n\
959 "),
960  __LINE__,
961  _T(__FILE__) ) );
962 
963  in->NoteOff(0,56,53);
964  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
965  in->NoteOff(0,63,55);
966  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
967  in->NoteOff(0,60,54);
968  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
969 
970  in->NoteOff(0,60,54);
971  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
972  in->NoteOff(0,56,53);
973  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
974  in->NoteOff(0,63,55);
975  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
976 
977  in->NoteOff(0,60,54);
978  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
979  in->NoteOff(0,63,55);
980  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
981  in->NoteOff(0,56,53);
982  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
983 
984  in->NoteOff(0,63,55);
985  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
986  // check sending note on with velocity = 0
987  in->NoteOff(0,56,53);
988  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
989  in->NoteOff(0,60,54);
990  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
991 
992  in->NoteOff(0,63,55);
993  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
994  in->NoteOff(0,60,54);
995  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
996  in->NoteOff(0,56,53);
997  CPPUNIT_ASSERT( out->Check(_T(""), __LINE__, _T(__FILE__) ) );
998 
999  in->Close();
1000  out->Close();
1001  DEBUGLOG(midiio,_T("|%s|"),((mutString)(out->getOut())).c_str());
1002  CPPUNIT_ASSERT( out->Check(_T("...closed.\n"), __LINE__, _T(__FILE__) ) );
1003 }
bool Check(mutString s, int line=-1, mutString filename=_T(__FILE__))
Definition: midicmnTest.h:87
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
midicmnInputDevice * in
Definition: midicmnTest.h:210
#define DEFAULT_PANIC
Definition: MidiKern.h:301
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:77
midicmnOutputDevice * out
Definition: midicmnTest.h:209
void NoteOn(int channel, int inkey, int velocity)
Definition: midicmnTest.h:160
virtual void Close()
Definition: Device.h:1080
#define mutString
Definition: Defs.h:84
void Panic(int type)
reset the device if requested
Definition: Device.cpp:442
void NoteOff(int channel, int inkey, int velocity)
Definition: midicmnTest.h:167
mutabor::Box box
Definition: midicmnTest.h:212
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
thistype* mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ( )
inline

Definiert in Zeile 752 der Datei Device.h.

752  {
753  return static_cast<thistype *>(this);
754  }
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
const thistype* mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ( ) const
inline

Definiert in Zeile 756 der Datei Device.h.

756  {
757  return static_cast<const thistype *>(this);
758  }
const char* mutabor::to_string ( error_type  type)
inline
mutabor::BoxClass::tone_entry::tone_entry ( double  p)
inline

Definiert in Zeile 401 der Datei Box.h.

401  :pitch(p),
402  flag(sounding) {}
enum mutabor::BoxClass::tone_entry::@45 flag
mutabor::BoxClass::tone_entry::tone_entry ( )
inline

Definiert in Zeile 403 der Datei Box.h.

403  :pitch(0.0),
404  flag(silent) {}
enum mutabor::BoxClass::tone_entry::@45 flag
wxString GisReadHead::ToString ( )
virtual

Erneute Implementation in GisReadArtHead.

Definiert in Zeile 353 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::Id, GisReadHead::Next, GisReadHead::nSub, GisReadHead::Prev, GisReadHead::PrevPtr, GisReadHead::SingleToken, GisReadHead::Time, TowxString() und GisReadHead::Turn.

Wird benutzt von GisReadHead::operator wxString() und GisReadArtHead::ToString().

354 {
355  wxString ret = wxString::Format(_T("GisReadHead: {\nthis: %p; Boss: %p; Next: %p; Prev: %p; PrevPtr: %p; *PrevPtr: %p;\n"
356  "nSub: %d; Cursor: {\n"),
357  (void*)this, (void*)Boss, (void*)Next, (void*)Prev,
358  (void*)PrevPtr, (void*)*PrevPtr, nSub) +
359  (Cursor?((wxString) *Cursor):wxString(_T(""))) + _T("}\nTime: ") + (TowxString(Time)) +
360  wxString::Format(_T("; Id: '%s'; Turn: %d; SingleToken: %d\n}\n"),
361  Id.c_str(), Turn, SingleToken);
362  return ret;
363 }
GisToken * Cursor
Definition: GIS_Head.h:70
frac Time
Definition: GIS_Head.h:71
GisReadHead ** PrevPtr
Definition: GIS_Head.h:67
GisReadHead * Boss
Definition: GIS_Head.h:68
GisReadHead * Next
Definition: GIS_Head.h:67
GisReadHead * Prev
Definition: GIS_Head.h:67
char Turn
Definition: GIS_Head.h:73
int nSub
Definition: GIS_Head.h:69
mutString Id
Definition: GIS_Head.h:72
wxString TowxString(const frac &f)
Definition: Frac.h:146
bool SingleToken
Definition: GIS_Head.h:74
wxString GisReadArtHead::ToString ( )
virtual

Erneute Implementation von GisReadHead.

Definiert in Zeile 627 der Datei GIS_Head.cpp.

Benutzt GisReadArtHead::Alter, GisReadArtHead::Articulation, GisReadArtHead::Box, GisReadArtHead::Delta, GisReadArtHead::Instr, GisReadArtHead::Intensity, GisReadArtHead::Octave, GisReadArtHead::Tempo, GisReadArtHead::Time2, GisReadHead::ToString() und TowxString().

Wird benutzt von GisReadArtHead::operator wxString().

628 {
629  wxString ret = _T("GisReadArtHead: {\n") ;
630  ret += GisReadHead::ToString();
631  ret += _T("Time2: ") + (TowxString(Time2));
632  ret +=
633  wxString::Format(_T("; Delta: %ld; Box: %d (%p)\n"
634  "Intensity: %p; Articulation: %p; Octave: %p\n"
635  "Alter: %p; Instr: %p; Tempo: %p\n"
636  "}\n"),
637  Delta,Box->get_routefile_id(),Box.get(),
638  (void*)Intensity, (void*)Articulation, (void*)Octave,
639  (void*)Alter, (void*)Instr, (void*)Tempo);
640  return ret;
641 }
TagList * Instr
Definition: GIS_Head.h:175
mutint64 Delta
Definition: GIS_Head.h:167
TagList * Alter
Definition: GIS_Head.h:174
virtual wxString ToString()
Definition: GIS_Head.cpp:353
TagList * Intensity
Definition: GIS_Head.h:171
TagList * Tempo
Definition: GIS_Head.h:176
mutabor::Box Box
Definition: GIS_Head.h:168
TagList * Octave
Definition: GIS_Head.h:173
wxString TowxString(const frac &f)
Definition: Frac.h:146
TagList * Articulation
Definition: GIS_Head.h:172
template<class I , class O , class B >
wxString mutabor::TRouteClass< I, O, B >::TowxString ( ) const
virtual

Definiert in Zeile 310 der Datei Route.cpp.

Wird benutzt von mutaborGUI::Check().

311  {
312  return wxString::Format(_T("\
313 TRouteClass<I,O,B>:\n\
314  userdata = %p\n\
315  Out = %p\n\
316  In = %p\n\
317  fileid = %d\n\
318  sess.id = %lu\n\
319  inputid = %d\n\
320  outputid = %d\n\
321  Box = %p\n\
322  Type = %d\n\
323  IFrom = %d\n\
324  ITo = %d\n\
325  OFrom = %d\n\
326  OTo = %d\n\
327  flags: Active:%d, ONoDrum:%d\n\
328 "),(void *)userdata,(void*)Out.get(),(void*)In.get(),routefile_id,(unsigned long)session_id(),inputid,outputid,box.get(),Type,IFrom,ITo,OFrom,OTo,
329  Active,ONoDrum);
330  }
InputDevice In
Definition: Route.h:461
RouteType Type
Definition: Route.h:477
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:470
OutputDevice Out
Definition: Route.h:460
wxString mutabor::BoxClass::TowxString ( ) const

Definiert in Zeile 58 der Datei Box.cpp.

Wird benutzt von mutaborGUI::Check().

58  {
59  wxString routeString;
60  for (routeListType::const_iterator r = routes.begin();
61  r != routes.end(); r++)
62  routeString += wxString::Format(_T(" %d:(%d->%d->%d)"),
63  (*r)->get_routefile_id(),
64  (*r)->GetDeviceId(InputDevice()),
65  (*r)->GetBoxId(),
66  (*r)->GetDeviceId(OutputDevice()));
67 
68 
69  return wxString::Format(_T("\nBox:\n\
70  session_id = %lu\n\
71  routefile_id = %d\n\
72  routes: %s\n"),
73  (unsigned long)session_id(),
74  routefile_id,routeString.c_str());
75  }
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:809
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
idtype< BoxClass > session_id
Definition: Box.h:649
routeListType routes
Definition: Box.h:651
int routefile_id
Definition: Box.h:650
wxString mutabor::Device::TowxString ( ) const
virtual

Erneute Implementation in mutabor::InputDeviceClass, mutabor::OutputDeviceClass, mutabor::CommonTypedDeviceAPI< T, P, L >, mutabor::CommonTypedDeviceAPI< OutputDeviceClass >, mutabor::CommonTypedDeviceAPI< InputDeviceClass >, mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 97 der Datei Device.cpp.

Benutzt mutabor::Device::dirty, mutabor::Device::isOpen, mutabor::Device::Name, mutabor::NoBox, mutabor::Device::routefile_id, mutabor::Device::routes, mutabor::Device::session_id und mutabor::Device::userdata.

Wird benutzt von mutabor::CommonTypedDeviceAPI< T, P, L >::TowxString().

97  {
98  wxString routeString;
99  for (routeListType::const_iterator r = routes.begin();
100  r != routes.end(); r++)
101  routeString += wxString::Format(_T(" %d:(%d->%d->%d)"),
102  (*r)->get_routefile_id(),
103  (*r)->GetDeviceId(InputDevice()),
104  (*r)->GetBox()?(*r)->GetBox()->get_routefile_id():NoBox,
105  (*r)->GetDeviceId(OutputDevice()));
106 
107 
108  return wxString::Format(_T("\nDevice:\n\
109  session_id = %lu\n\
110  routefile_id = %d\n\
111  userdata = %p\n\
112  Name = '%s'\n\
113  Flags: dirty:%d, isOpen:%d\n\
114  Routes: %s\n"),
115  (unsigned long)session_id(),
116  routefile_id,
117  userdata,
118  (const wxChar *) Name,
119  dirty,isOpen,
120  (const wxChar *) routeString);
121  }
routeListType routes
Definition: Device.h:627
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:621
void * userdata
Definition: Device.h:650
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:809
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:968
mutString Name
Definition: Device.h:623
int routefile_id
Definition: Device.h:622
template<class T , class P , class L >
wxString mutabor::CommonTypedDeviceAPI< T, P, L >::TowxString ( ) const
virtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::OutputDeviceClass, mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 289 der Datei Device.cpp.

Benutzt intrusive_ptr_get_refcount() und mutabor::Device::TowxString().

Wird benutzt von mutabor::OutputDeviceClass::TowxString().

289  {
290  return Device::TowxString()
291  + wxString::Format(_T("\
292 CommonTypedDeviceAPI:\n\
293  ptrct = %d\n\
294 "),(int)intrusive_ptr_get_refcount(this));
295  }
virtual wxString TowxString() const
Definition: Device.cpp:97
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
wxString mutabor::OutputDeviceClass::TowxString ( ) const
virtual
wxString mutabor::InputDeviceClass::TowxString ( ) const
virtual

Erneute Implementation von mutabor::CommonTypedDeviceAPI< InputDeviceClass >.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis und mutabor::CommonFileInputDevice.

Definiert in Zeile 516 der Datei Device.cpp.

Benutzt mutabor::Device::Mode.

Wird benutzt von mutaborGUI::Check(), mutabor::CommonFileInputDevice::TowxString(), mutabor::InputGis::TowxString(), mutabor::InputMidiPort::TowxString() und mutabor::InputMidiFile::TowxString().

516  {
517  return (CommonTypedDeviceAPI<InputDeviceClass>::
518  TowxString()) + wxString::Format(_T("\
519 InputDeviceClass:\n\
520  Mode = %d\n\
521 "),Mode);
522 
523  }
enum MutaborModeType Mode
Definition: Device.h:626
virtual wxString TowxString() const
Definition: Device.cpp:516
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::TRouteClass ( )
inlineprotected

Definiert in Zeile 484 der Datei Route.h.

484  :
485  userdata(this,_T("userdata")) {
486  TRACEC;
487  AppendToRouteList(this);
488  InputDevice in (NULL);
489  OutputDevice out (NULL);
490  Create(in,out,RTall,
491  -1,-1,
492  NULL,
493  false,
494  -1,-1,true);
495  }
#define TRACEC
Definition: mutDebug.h:151
all events will pass
Definition: Route.h:80
void Create(InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
static void AppendToRouteList(Route route)
Definition: Route.cpp:282
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::TRouteClass ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlineprotected

Definiert in Zeile 497 der Datei Route.h.

507  :
508  userdata(this,_T("userdata"))
509  {
510  TRACEC;
511  AppendToRouteList(this);
512  Create(in,out,type,
513  iFrom,iTo,
514  box,
515  active,
516  oFrom,oTo,oNoDrum);
517  }
#define TRACEC
Definition: mutDebug.h:151
void Create(InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
static void AppendToRouteList(Route route)
Definition: Route.cpp:282
void mutabor::BoxClass::TruncateBoxList ( Box  dev)
staticprotected

Definiert in Zeile 306 der Datei Box.cpp.

Benutzt STUB.

307  {
308  STUB;
309  return;
310 #if 0
311  if (!boxList) return;
312 
313  if (boxList == dev) {
314  boxList = NULL;
315  return;
316  }
317 
318  DevicePtr d = boxList ;
319  while (d->GetNext() && d->GetNext() != dev) {
320  d = d->GetNext();
321  }
322  if (d->GetNext()) {
323  d -> SetNext(NULL);
324  }
325 #endif
326  }
#define STUB
functions or code that has to be written – simple function
Definition: mhDefs.h:140
static listtype boxList
Definition: Box.h:643
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::TruncateDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 325 der Datei Device.cpp.

Benutzt STUB.

326  {
327  STUB;
328  return;
329 #if 0
330  if (!deviceList) return;
331 
332  if (deviceList == dev) {
333  deviceList = NULL;
334  return;
335  }
336 
337  DevicePtr d = deviceList ;
338  while (d->GetNext() && d->GetNext() != dev) {
339  d = d->GetNext();
340  }
341  if (d->GetNext()) {
342  d -> SetNext(NULL);
343  }
344 #endif
345  }
#define STUB
functions or code that has to be written – simple function
Definition: mhDefs.h:140
static listtype deviceList
Definition: Device.h:668
void UnRavel ( )

Definiert in Zeile 812 der Datei GIS.cpp.

Benutzt Clear(), LastOpenBracket, GisToken::Next, Para und TagName.

Wird benutzt von GisParse().

813 {
814  *Current = 0;
815  // unravel Next pointers
816 
817  while ( LastOpenBracket ) {
819  LastOpenBracket = p->Next;
820  p->Next = 0;
821  }
822 
823  // clear TagName
824  if ( TagName.size() ) Clear(&TagName);
825 
826  // clear Para
827  if ( Para ) delete Para;
828 }
Definition: GIS.h:132
GisToken * Para
Definition: GIS.cpp:118
GisToken * Next
Definition: GIS.h:136
void Clear(mutString *s)
Definition: GIS.cpp:501
mutString TagName
Definition: GIS.cpp:114
GisToken * LastOpenBracket
Definition: GIS.cpp:108
GisToken ** Current
Definition: GIS.cpp:108
void mutabor::BoxClass::Unregister ( ChangedCallback callback)
inlineprotected

Definiert in Zeile 679 der Datei Box.h.

Benutzt mutabor::BoxClass::callbacks.

679  {
680  callbacks.remove(callback);
681  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:658
void mutabor::BoxClass::UpdateCallback ( struct mutabor_box_type b,
unsigned int  flags 
)
static

Definiert in Zeile 831 der Datei Box.cpp.

Benutzt mutabor::BoxClass::ChangedCallback::ActionChanged, mutabor::BoxClass::ChangedCallback::BoxChanged, mutabor::BoxClass::ChangedCallback::KeysChanged, mutabor::BoxClass::ChangedCallback::LogicChanged, mutabor::hidden::mutabor_action_changed, mutabor::hidden::mutabor_box_changed, mutabor::hidden::mutabor_keys_changed, mutabor::hidden::mutabor_logic_changed und mutabor::BoxClass::updateflags.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::UpdateTones ( )
inline

Definiert in Zeile 236 der Datei Route.h.

236  {
237  if (Out && Out->IsOpen())
238  Out->UpdateTones(this);
239  }
OutputDevice Out
Definition: Route.h:460
void mutabor::BoxClass::UpdateTones ( )

Update the currently playing tones to the current tone system.

Zu beachten
this function was formerly defined as NotesCorrect

Definiert in Zeile 718 der Datei Box.cpp.

Benutzt mutabor::BoxClass::routes.

719  {
720  for (routeListType::const_iterator route = routes.begin();
721  route != routes.end(); route++) {
722  (*route)->UpdateTones();
723  }
724  }
routeListType routes
Definition: Box.h:651
void mutabor::OutputDeviceClass::UpdateTones ( RouteClass route)
inline

Definiert in Zeile 840 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_UpdateTones() und mutabor::OutputDeviceClass::write_lock.

840  {
841  ScopedLock lock(write_lock);
842  do_UpdateTones(route);
843  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_UpdateTones(RouteClass *route)=0
virtual wxThread::ExitCode mutabor::InputDeviceClass::WaitForDeviceFinish ( wxThreadWait  flags = wxTHREAD_WAIT_BLOCK)
inlinevirtual

Wait for the thread started with Play().

This function can be used to wait for the device to finish playing. It can be used for joinable threads, only. For detached threads its behaviour is undefined.

Parameter
flagsIndicators how to wait see wxThread::Wait for more detail.
Rückgabe
exit code from the thread after it has ended. Non-threaded devices will return NULL.

Definiert in Zeile 1127 der Datei Device.h.

1127 { return NULL; }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::WATCHEDPTR ( void  ,
routing  ,
TRouteClass< I, O, B >   
)
protected
virtual const char* mutabor::BoxFactory::FactoryNotFound::what ( void  ) const
throw (
)
inlinevirtual

Returns the thrown error message as a c-style string.

Definiert in Zeile 724 der Datei Box.h.

Benutzt mutabor::BoxFactory::FactoryNotFound::message_.

724 { return message_.c_str(); }
virtual const char* mutabor::DeviceFactory::FactoryNotFound::what ( void  ) const
throw (
)
inlinevirtual

Returns the thrown error message as a c-style string.

Definiert in Zeile 1273 der Datei Device.h.

Benutzt mutabor::DeviceFactory::FactoryNotFound::message_.

1273 { return message_.c_str(); }
void GisWriteHead::WriteChord ( )

Definiert in Zeile 1389 der Datei GIS_Head.cpp.

Benutzt ChordNote::CheckClose(), GisWriteHead::ChordNotes, GisWriteHead::ChordPos, GisWriteHead::CurrentTime, GisWriteHead::Cursor, ChordNote::Cursor, ChordNote::Data und ChordNote::Next.

Wird benutzt von GisWriteHead::CloseCurrentToken() und GisWriteHead::ProceedGis().

1390 {
1391  if ( !ChordNotes ) return;
1392 
1393  // close open ties
1394  ChordNote *ANote = ChordNotes;
1395 
1396  while ( ANote ) {
1397  ANote->CheckClose();
1398  ANote = ANote->Next;
1399  }
1400 
1401  char BossLine = 1; // wether in Boss data also data for Chord;
1402 
1403  char SingleLine = 0; // wether there is in fact only one Line (no real chord)
1404 
1405  if ( Cursor == ChordPos )
1406  BossLine = 0;
1407 
1408  if ( !ChordNotes->Next && !BossLine )
1409  SingleLine = 1;
1410 
1411 #ifdef CHORDS_WITH_REST
1412  ChordNotes->AddRest();
1413 
1414 #endif
1415  if ( SingleLine ) // only one line (no real chord)
1416  {
1417  *(ChordNotes->Cursor) = *ChordPos;
1418  *ChordPos = ChordNotes->Data;
1419 
1420  if ( Cursor == ChordPos )
1422 
1423  ChordNotes->Data = 0;
1424  } else {}
1425 
1426  delete ChordNotes;
1427 
1428  ChordNotes = 0;
1429  CurrentTime = 0;
1430 }
GisToken ** Cursor
Definition: GIS_Head.h:437
ChordNote * ChordNotes
Definition: GIS_Head.h:325
frac CurrentTime
Definition: GIS_Head.h:321
GisToken ** ChordPos
Definition: GIS_Head.h:324
GisToken * Data
Definition: GIS_Head.h:436
void CheckClose()
Definition: GIS_Head.h:501
GisToken ** Cursor
Definition: GIS_Head.h:320
ChordNote * Next
Definition: GIS_Head.h:435
virtual void mutabor::BoxClass::WriteData ( wxConfigBase *  config)
inlinevirtual

Definiert in Zeile 331 der Datei Box.h.

331 {};
virtual void mutabor::Device::WriteData ( wxConfigBase *  config)
inlinevirtual

Definiert in Zeile 594 der Datei Device.h.

594 {};
mutabor::BoxClass::~BoxClass ( )
virtual

Definiert in Zeile 79 der Datei Box.cpp.

Benutzt debug_destruct_class(), DEBUGLOG, intrusive_ptr_add_ref(), TRACEC und UNREACHABLEC.

80  {
81  // if there are remaining pointers we have other problems.
82  DEBUGLOG(routing,_T("this = %p"),(void*)this);
83  if (open) Close();
84 #ifdef DEBUG
85  // prevent from endless destroy loop
88  BoxListType::iterator i = FindInBoxList(this);
89  if (i != boxList.end()) {
91  // boxList.erase(i);
92  }
93 #endif
94  TRACEC;
96  if (box) free(box);
97  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void debug_destruct_class(void *ptr)
Definition: mutDebug.cpp:134
static listtype boxList
Definition: Box.h:643
#define TRACEC
Definition: mutDebug.h:151
struct mutabor_box_type * box
Definition: Box.h:648
void Close()
Definition: Box.h:343
#define UNREACHABLEC
Definition: mhDefs.h:148
void intrusive_ptr_add_ref(intrusive_ptr_T *obj)
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:690
mutabor::BoxFactory::~BoxFactory ( )
virtual

Definiert in Zeile 911 der Datei Box.cpp.

911 {}
mutabor::BoxClass::BoxLock::~BoxLock ( )
inline

Definiert in Zeile 638 der Datei Box.h.

Benutzt mutabor::BoxClass::BoxLock::box.

638  {
639  box->UpdateTones();
640  box->ExecuteCallbacks(box->updateflags);
641  }
mutabor::BoxClass::ChangedCallback::~ChangedCallback ( )
inline

Definiert in Zeile 143 der Datei Box.h.

Benutzt mutabor::BoxClass::ChangedCallback::box.

143  {
144  if (box)
145  box->Unregister(this);
146  }
template<class T , class P , class L >
mutabor::CommonTypedDeviceAPI< T, P, L >::~CommonTypedDeviceAPI ( )
virtual

Definiert in Zeile 126 der Datei Device.cpp.

Benutzt debug_destruct_class(), DEBUGLOG, TRACEC und UNREACHABLEC.

127  {
128  // if there are remaining pointers we have other problems.
129  DEBUGLOG(routing,_T("this = %p"),(void*)this);
130 #ifdef Debug
131  listttype::iterator i = FindInDeviceList(this);
132  if (i != deviceList.end()) {
133  UNREACHABLEC;
134  deviceList.erase(i);
135  }
136 #endif
137  debug_destruct_class(this);
138  TRACEC;
139  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void debug_destruct_class(void *ptr)
Definition: mutDebug.cpp:134
#define TRACEC
Definition: mutDebug.h:151
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:789
static listtype deviceList
Definition: Device.h:668
#define UNREACHABLEC
Definition: mhDefs.h:148
virtual mutabor::Device::~Device ( )
inlinevirtual

Definiert in Zeile 481 der Datei Device.h.

Benutzt TRACEC.

481 { TRACEC; }
#define TRACEC
Definition: mutDebug.h:151
mutabor::DeviceFactory::~DeviceFactory ( )
virtual

Definiert in Zeile 540 der Datei Device.cpp.

540 {}
virtual mutabor::BoxFactory::FactoryNotFound::~FactoryNotFound ( )
throw (
)
inlinevirtual

Definiert in Zeile 721 der Datei Box.h.

721 {}
virtual mutabor::DeviceFactory::FactoryNotFound::~FactoryNotFound ( )
throw (
)
inlinevirtual

Definiert in Zeile 1270 der Datei Device.h.

1270 {}
virtual mutabor::InputDeviceClass::~InputDeviceClass ( )
inlinevirtual

Definiert in Zeile 1078 der Datei Device.h.

Benutzt TRACEC.

1078 { TRACEC; }
#define TRACEC
Definition: mutDebug.h:151
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual mutabor::TRouteClass< I, O, B >::NoOutputDevice::~NoOutputDevice ( )
throw (
)
inlinevirtual

Definiert in Zeile 130 der Datei Route.h.

130 {}
virtual mutabor::OutputDeviceClass::~OutputDeviceClass ( )
inlinevirtual

Definiert in Zeile 816 der Datei Device.h.

Benutzt mutabor::Device::IsOpen() und TRACEC.

816  {
817  TRACEC;
818  wxASSERT(!IsOpen());
819  TRACEC;
820  }
bool IsOpen() const
Definition: Device.h:607
#define TRACEC
Definition: mutDebug.h:151
mutabor::RouteFactory::~RouteFactory ( )
protectedvirtual

Destructor.

This destructor will destroy the route factory. It does not touch the route objects that are created using this class.

You should not delete the factory directly as it saves a pointer to

Definiert in Zeile 534 der Datei Route.cpp.

534 {}
mutabor::ScopedBox::~ScopedBox ( )
inline

Definiert in Zeile 795 der Datei Box.h.

795  {
796  if (get())
797  get()->Destroy();
798  }
mutabor::ScopedInputDevice::~ScopedInputDevice ( )
inline

Definiert in Zeile 1406 der Datei Device.h.

1406  {
1407  if (get())
1408  get()->Destroy();
1409  }
mutabor::ScopedOutputDevice::~ScopedOutputDevice ( )
inline

Definiert in Zeile 1423 der Datei Device.h.

1423  {
1424  if (get())
1425  get()->Destroy();
1426  }
mutabor::ScopedRoute::~ScopedRoute ( )
inline

Definiert in Zeile 285 der Datei Route-inlines.h.

286  {
287  if (get())
288  get()->Destroy();
289  }
mutabor::BoxClass::set_callback::~set_callback ( )
inline

Definiert in Zeile 666 der Datei Box.h.

Benutzt mutabor::BoxClass::set_callback::box und mutabor::BoxClass::current_compile_callback.

666  {
668  }
CompileCallback * current_compile_callback
Definition: Box.h:670
template<class I , class O , class B >
mutabor::TRouteClass< I, O, B >::~TRouteClass ( )
virtual

Definiert in Zeile 55 der Datei Route.cpp.

Benutzt debug_destruct_class(), DEBUGLOG, mutASSERT und TRACEC.

56  {
57  DEBUGLOG(smartptr,_T("deleting %p"),(void*)this);
58 #ifdef DEBUG
59  typename routeListType::iterator r =
60  std::find(routeList.begin(),
61  routeList.end(),
62  this);
63  mutASSERT(r == routeList.end());
64  TRACEC;
65 #endif
67  }
#define DEBUGLOG(level,...)
Definition: mutDebug.h:146
void debug_destruct_class(void *ptr)
Definition: mutDebug.cpp:134
#define TRACEC
Definition: mutDebug.h:151
static routeListType routeList
Definition: Route.h:469
#define mutASSERT
Definition: Defs.h:222

Variablen-Dokumentation

mutString accedentials
static

Definiert in Zeile 89 der Datei GSP.cpp.

Wird benutzt von GisNote::GisNote() und ReadNote().

bool mutabor::BoxClass::logic_entry::active

Definiert in Zeile 381 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::Active
protected
int mutabor::BoxClass::tone_system::anchor

Definiert in Zeile 409 der Datei Box.h.

Wird benutzt von MutTextBox::GetToneSystem() und mutabor::BoxClass::GetToneSystem().

char ArticulationHold[5] = { 80, 100, 90, 90, 60 }

Definiert in Zeile 42 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

char ArticulationOff[5] = { 80, 80, 60, 127, 127 }

Definiert in Zeile 43 der Datei GIS_Head.cpp.

mutabor::hidden::mutabor_callback_type mutabor::BoxClass::backend_callbacks
staticprotected

Definiert in Zeile 671 der Datei Box.h.

Wird benutzt von mutabor::initialize_box_data().

int bad = 0
static

Definiert in Zeile 51 der Datei GSP_File.cpp.

Wird benutzt von InFile::NewLine(), OpenFile() und ReadNewLine().

uint8_t mutabor::ChannelData::bank_coarse
protected
uint8_t mutabor::ChannelData::bank_fine
protected
int mutabor::ChannelData::bend
protected
Box mutabor::BoxClass::ChangedCallback::box
template<class I = InputDevice, class O = OutputDevice, class B = Box>
Box mutabor::TRouteClass< I, O, B >::box
protected
Box mutabor::BoxClass::BoxLock::box

Definiert in Zeile 633 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::BoxLock::~BoxLock().

struct mutabor_box_type* mutabor::BoxClass::box
protected
BoxClass* mutabor::BoxClass::set_callback::box
private
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::boxid
protected
BoxListType mutabor::BoxClass::boxList
staticprotected

Definiert in Zeile 77 der Datei GSP.cpp.

Wird benutzt von DoParse() und GspParse().

std::list<ChangedCallback *> mutabor::BoxClass::callbacks
protected
int mutabor::BoxClass::current_tone_entry::channel

Definiert in Zeile 420 der Datei Box.h.

controller_vector mutabor::ChannelData::controller
protected
controller_vector mutabor::ChannelData::controller_changed
protected
RouteFactory* mutabor::RouteFactory::FactoryAlreadySet::created

Definiert in Zeile 571 der Datei Route.h.

GisToken** Current

Definiert in Zeile 108 der Datei GIS.cpp.

CompileCallback* mutabor::BoxClass::current_compile_callback
protected
int mutabor::BoxClass::current_key_logic
protected

Definiert in Zeile 656 der Datei Box.h.

int mutabor::BoxClass::current_key_tonesystem
protected

Definiert in Zeile 655 der Datei Box.h.

current_keys_type mutabor::InputDeviceClass::current_keys
protected
mutString mutabor::BoxClass::current_logic
protected

Definiert in Zeile 653 der Datei Box.h.

mutString mutabor::BoxClass::current_tonesystem
protected

Definiert in Zeile 654 der Datei Box.h.

mutString CurrentLine
mutString CurrentLine
size_t CurrentPos
size_t CurrentPos
bool mutabor::ChannelData::data_is_rpn
protected

Definiert in Zeile 464 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::get_index() und mutabor::ChannelData::set_controller().

int debugcount = 0

Definiert in Zeile 125 der Datei GIS.cpp.

mutChar DelimitChars[] = mutT("{}[]()")

Definiert in Zeile 96 der Datei GSP.cpp.

Wird benutzt von DoParse().

InputDevice mutabor::InputDeviceClass::current_keys_type::entry::device

Definiert in Zeile 981 der Datei Device.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
CommonTypedDeviceAPI< T, P, L >::listtype mutabor::CommonTypedDeviceAPI< T, P, L >::deviceList
staticprotected
const mutString mutabor::DevTypeName
Initialisierung:
=
{
N_("Unknown"),
N_("Midi Port"),
N_("Midi File"),
N_("GUIDO .gmn File")
}
N_("Debug Execute.cpp")) DEBUGFLAG(kernel_tabgen

Definiert in Zeile 334 der Datei Route.cpp.

bool mutabor::Device::dirty
protected
frac duration
static
int Eof

Definiert in Zeile 43 der Datei GSP_File.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadNewLine() und ReadParaStr().

int Eof

Definiert in Zeile 43 der Datei GSP_File.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadNewLine() und ReadParaStr().

BoxFactory::factorylist mutabor::BoxFactory::factories
staticprotected
DeviceFactory::factorylist mutabor::DeviceFactory::factories
staticprotected
RouteFactory * mutabor::RouteFactory::factory
staticprotected

Definiert in Zeile 45 der Datei GSP_File.cpp.

Wird benutzt von CloseFile(), OpenFile() und ReadNewLine().

size_t mutabor::ChannelData::first_unchanged
protected

Definiert in Zeile 462 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::Reset() und mutabor::ChannelData::set_controller().

enum { ... } mutabor::BoxClass::tone_entry::flag
enum { ... } mutabor::BoxClass::logic_entry::flags
GisReadArtProceed GisReadArtDummy
GisReadProceed GisReadDummy
int GspCurrentLineNr

Definiert in Zeile 47 der Datei GSP.cpp.

Wird benutzt von DoError(), GetSep(), GspParse(), ReadNewLine() und SavePos().

int GspCurrentLineNr

Definiert in Zeile 47 der Datei GSP.cpp.

Wird benutzt von DoError(), GetSep(), GspParse(), ReadNewLine() und SavePos().

int GspError
int GspError
mutString GspErrorLine

Definiert in Zeile 50 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse() und main().

mutString GspErrorLine

Definiert in Zeile 50 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse() und main().

int GspErrorLineNr

Definiert in Zeile 48 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

int GspErrorLineNr

Definiert in Zeile 48 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

int GspErrorPos

Definiert in Zeile 49 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

int GspErrorPos

Definiert in Zeile 49 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

const mutTranslationChar* GspErrorText[]

Definiert in Zeile 31 der Datei GSP_Err.cpp.

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

const mutTranslationChar* GspErrorText[]

Definiert in Zeile 31 der Datei GSP_Err.cpp.

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

size_t mutabor::BoxClass::current_tone_entry::id

Definiert in Zeile 419 der Datei Box.h.

int mutabor::BoxFactory::FactoryNotFound::id

Definiert in Zeile 713 der Datei Box.h.

int mutabor::DeviceFactory::FactoryNotFound::id

Definiert in Zeile 1262 der Datei Device.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::IFrom
protected
const size_t mutabor::ChannelData::IGNORE_UNIQUE_ID = ULONG_MAX
static

Definiert in Zeile 102 der Datei Device.h.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Controller().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
InputDevice mutabor::TRouteClass< I, O, B >::In
protected
char mutabor::InDevChanged
int mutabor::BoxClass::current_tone_entry::index

Definiert in Zeile 418 der Datei Box.h.

bool initialized = false
static

Definiert in Zeile 49 der Datei GSP_File.cpp.

Wird benutzt von OpenFile() und ReadNewLine().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::inputid
protected
bool mutabor::Device::isOpen
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::ITo
protected
int mutabor::BoxClass::logic_entry::key

Definiert in Zeile 384 der Datei Box.h.

int mutabor::InputDeviceClass::current_keys_type::entry::key
char Komma

Definiert in Zeile 74 der Datei GSP.cpp.

Wird benutzt von DoParse() und GetSep().

frac LastDuration

Definiert in Zeile 122 der Datei GIS.cpp.

int LastOctave

Definiert in Zeile 120 der Datei GIS.cpp.

GisToken * LastOpenBracket

Definiert in Zeile 108 der Datei GIS.cpp.

Wird benutzt von UnRavel().

GisTagBegin* LastOpenRange

Definiert in Zeile 110 der Datei GIS.cpp.

Wird benutzt von BeginRange().

GisToken * LastPara

Definiert in Zeile 118 der Datei GIS.cpp.

char LastTag

Definiert in Zeile 84 der Datei GSP.cpp.

Wird benutzt von DoParse(), GspParse() und ReadTag().

bool mutabor::ChannelData::looped
protected

Definiert in Zeile 463 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::Reset() und mutabor::ChannelData::set_controller().

map_type mutabor::InputDeviceClass::current_keys_type::map
protected
std::string mutabor::BoxFactory::FactoryNotFound::message_
std::string mutabor::DeviceFactory::FactoryNotFound::message_
bool minus

Definiert in Zeile 338 der Datei GSP.cpp.

Wird benutzt von ReadParaNumber().

enum MutaborModeType mutabor::Device::Mode
protected
Mutex mutabor::BoxClass::mutex
protected
std::string mutabor::BoxClass::logic_entry::name

Definiert in Zeile 382 der Datei Box.h.

Wird benutzt von mutabor::append_triggers().

mutString mutabor::Device::Name
protected
int mutabor::BoxClass::nextboxid = Box0
staticprotected

Definiert in Zeile 644 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::GetNextFreeBox().

int NumberLength

Definiert in Zeile 75 der Datei GSP.cpp.

Wird benutzt von ReadLong() und ReadParaNumber().

int octave
static

Definiert in Zeile 87 der Datei GSP.cpp.

Wird benutzt von GisNote::GisNote(), GspParse(), Note() und ReadNote().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::OFrom
protected
RouteFactory* mutabor::RouteFactory::FactoryAlreadySet::old

Definiert in Zeile 570 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::ONoDrum
protected
bool mutabor::BoxClass::open
protected

Definiert in Zeile 652 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::Close(), mutabor::BoxClass::IsOpen() und mutabor::BoxClass::Open().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::OTo
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
OutputDevice mutabor::TRouteClass< I, O, B >::Out
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::outputid
protected
GisToken* Para

Definiert in Zeile 118 der Datei GIS.cpp.

Wird benutzt von UnRavel().

char ParaMode

Definiert in Zeile 73 der Datei GSP.cpp.

Wird benutzt von DoParse(), GetSep() und ReadTag().

double mutabor::BoxClass::tone_system::period

Definiert in Zeile 410 der Datei Box.h.

Wird benutzt von MutTextBox::GetToneSystem() und mutabor::BoxClass::GetToneSystem().

double mutabor::BoxClass::tone_entry::pitch

Definiert in Zeile 399 der Datei Box.h.

mutString PossibleErrorLine

Definiert in Zeile 56 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

int PossibleErrorLineNr

Definiert in Zeile 54 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

int PossibleErrorPos

Definiert in Zeile 55 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::REFPTR_INTERFACE
protected

Definiert in Zeile 536 der Datei Route.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::REFPTR_INTERFACE
private

Definiert in Zeile 660 der Datei Device.h.

mutabor::BoxClass::REFPTR_INTERFACE
private

Definiert in Zeile 704 der Datei Box.h.

GisToken* Root

Definiert in Zeile 106 der Datei GIS.cpp.

Wird benutzt von GisParse().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Route mutabor::TRouteClass< I, O, B >::NoOutputDevice::route

Definiert in Zeile 125 der Datei Route.h.

Wird benutzt von mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Route mutabor::TRouteClass< I, O, B >::NoInputDevice::route

Definiert in Zeile 134 der Datei Route.h.

Wird benutzt von mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice().

Route mutabor::InputDeviceClass::current_keys_type::entry::route
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::routefile_id
protected
int mutabor::Device::routefile_id
protected
int mutabor::BoxClass::routefile_id
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
TRouteClass< I, O, B >::routeListType mutabor::TRouteClass< I, O, B >::routeList
staticprotected
routeListType mutabor::Device::routes
protected
routeListType mutabor::BoxClass::routes
protected
const mutString mutabor::RTName
Initialisierung:
=
{
_T("ALL"), _T("ELSE"), _T("CHANNEL"), _T("STAFF")
}

Definiert in Zeile 49 der Datei Route.cpp.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetTypeName(), compat30::SaveRoutes() und compat30::Str2RT().

Definiert in Zeile 59 der Datei GSP.cpp.

Wird benutzt von ChordNote::CheckCloseAlter(), ChordNote::CheckCloseTie(), GetSep(), SepPos() und takesep().

mutString Sep

Definiert in Zeile 59 der Datei GSP.cpp.

Wird benutzt von ChordNote::CheckCloseAlter(), ChordNote::CheckCloseTie(), GetSep(), SepPos() und takesep().

mutChar SepChars[] = mutT(" \t\r\n")

Definiert in Zeile 94 der Datei GSP.cpp.

Wird benutzt von GetSep().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
idtype<TRouteClass<I,O> > mutabor::TRouteClass< I, O, B >::session_id
protected
idtype<Device> mutabor::Device::session_id
protected

Id used during runtime;.

Definiert in Zeile 621 der Datei Device.h.

Wird benutzt von mutabor::Device::get_session_id(), mutabor::CommonFileOutputDevice::TowxString() und mutabor::Device::TowxString().

idtype<BoxClass> mutabor::BoxClass::session_id
protected

Definiert in Zeile 649 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::get_session_id().

const ChannelData* mutabor::InputDeviceClass::current_keys_type::entry::settings

Definiert in Zeile 982 der Datei Device.h.

int mutabor::ChannelData::Sound
protected
std::string mutabor::BoxClass::logic_entry::startTuning

Definiert in Zeile 383 der Datei Box.h.

char TagMode
mutString TagName

Definiert in Zeile 114 der Datei GIS.cpp.

Wird benutzt von BeginRange(), BuildTag(), GisParse(), Tag() und UnRavel().

Definiert in Zeile 40 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

Definiert in Zeile 40 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

mutString TagSep

Definiert in Zeile 116 der Datei GIS.cpp.

Wird benutzt von BeginParameter(), BeginRange(), BuildTag(), EndParameter(), GisParse() und Tag().

const mutChar* TagShorts[NTAGSHORTS]

Definiert in Zeile 96 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

const mutChar* TagShorts[NTAGSHORTS]
Initialisierung:
=
{
mutT(""),
mutT("i"),
mutT("sl"),
mutT("bm"),
mutT("t"),
mutT("|")
}
#define mutT
Definition: Defs.h:77

Definiert in Zeile 96 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

tone_list mutabor::BoxClass::tone_system::tones

Definiert in Zeile 411 der Datei Box.h.

Wird benutzt von MutTextBox::GetToneSystem() und mutabor::BoxClass::GetToneSystem().

struct any_trigger mutabor::BoxClass::logic_entry::trigger

Definiert in Zeile 385 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
RouteType mutabor::TRouteClass< I, O, B >::Type
protected
size_t mutabor::InputDeviceClass::current_keys_type::entry::unique_id
unsigned int mutabor::BoxClass::updateflags
protected

Definiert in Zeile 657 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::UpdateCallback().

void* mutabor::Device::userdata
private
void* mutabor::InputDeviceClass::current_keys_type::entry::userdata

Definiert in Zeile 983 der Datei Device.h.

int mutabor::InputDeviceClass::current_keys_type::entry::velocity

Definiert in Zeile 979 der Datei Device.h.

Mutex mutabor::OutputDeviceClass::write_lock
protected
Mutex mutabor::InputDeviceClass::write_lock
protected

Freundbeziehungen

friend class ::mutaborGUI::BoxData
friend

Definiert in Zeile 645 der Datei Box.h.

friend class ::mutaborGUI::GUIInputDeviceBase
friend

Definiert in Zeile 617 der Datei Device.h.

friend class ::mutaborGUI::GUIOutputDeviceBase
friend
Noch zu erledigen:
lift this restrection afer GUI is working again

Definiert in Zeile 616 der Datei Device.h.

friend class BoxFactory
friend

Definiert in Zeile 646 der Datei Box.h.

friend class DeviceFactory
friend

Definiert in Zeile 814 der Datei Device.h.

friend class DeviceFactory
friend

Definiert in Zeile 973 der Datei Device.h.

void initialize_box_data ( )
friend

Definiert in Zeile 1005 der Datei Box.cpp.

1006  {
1008  }
static mutabor::hidden::mutabor_callback_type backend_callbacks
Definition: Box.h:671
mutabor_callback_type * mutabor_set_callbacks(mutabor_callback_type *callbacks)
Set the callbacks for the mutabor backend.
Definition: Execute.cpp:120
template<class I = InputDevice, class O = OutputDevice, class B = Box>
friend class mutaborGUI::GUIRouteBase
friend
Noch zu erledigen:
remove this reference after GUI is working again

Definiert in Zeile 109 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
friend class RouteFactory
friend

Definiert in Zeile 107 der Datei Route.h.


Erzeugt am Son Feb 9 2014 18:39:23 für Mutabor von doxygen 1.8.6